java实现跳动的小球,根据需要选择速度

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class my_ball extends JFrame implements Runnable{
static int a=5,b=2;//a是小球上下移动的速度,b是小球左右移动的速度.
static int x=0,y=50;//小球的初始坐标
static Thread my_thread;
JPanel my_frame;
JTextField jl1,jl2;
JLabel j1,j2;
JButton jb,jb2,jb3;
JLabel ja;
public my_ball()
{
setSize(500,500);
setTitle("弹跳小球");
my_frame=new JPanel(new BorderLayout());
JPanel jp=new JPanel();
JPanel jp1=new JPanel();
j1=new JLabel("请输入小球初始水平速度a");
j2=new JLabel("请输入小球初始垂直速度b");
jl1=new JTextField("5",2);
jl2=new JTextField("2",2);
jb=new JButton("开始弹跳");
jb2=new JButton("暂停弹跳10秒");
jb3=new JButton("结束弹跳");
ja=new JLabel("弹跳公式为:x=x+a;"+"\n"+" y=y+b;");
ja.setFont(new Font("隶书",Font.BOLD,25));
add(my_frame);
my_frame.add(jp,BorderLayout.NORTH);
my_frame.add(jp1,BorderLayout.SOUTH);
my_frame.add(ja,BorderLayout.CENTER);
jp.add(j1);
jp.add(jl1);
jp.add(j2);
jp.add(jl2);
jp1.add(jb);
jb.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
a=Integer.parseInt(jl1.getText());
b=Integer.parseInt(jl2.getText());}
catch(NumberFormatException p) {}
finally {
my_thread.start();}
}
});
jp1.add(jb2);
jb2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
my_thread.sleep(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
jp1.add(jb3);
jb3.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
my_thread.stop();
}
});
my_frame.setBounds(300, 500, 500, 500);
setVisible(true);
my_thread=new Thread(this);
setDefaultCloseOperation(3);
}
public static void main(String [] args)
{
my_ball rel_ball=new my_ball();
}
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.GREEN);
g.fillOval(x, y, 50, 50);
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
if (x<0 || x>=my_frame.getWidth()-50)
b=-b;
if (y<50|| y>=my_frame.getHeight()-50)
a=-a;
x=x+b;
y=y+a;
repaint();
try {my_thread.sleep(10);}
catch(InterruptedException e)
{
}
}
}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值