JAVA之会跳动的小球

利用Java线程实现小球跳动

知识点

1.窗体,面板;
2.paint()方法;
3.线程;

核心算法

小球运动到左界面边界或右界面边界时,纵坐标不变,横坐标取相反方向
小球运动到上界面边界或下界面边界时,横坐标不变,纵坐标取相反方向
run()方法实现每0.02秒,小球跳动一下

public void run() {
		// TODO Auto-generated method stub
		while(true){
			try {
				Thread.sleep(20);	//小球每0.02秒跳动一次
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			/*
			 * 小球运动到左界面或右界面时,zy不变,zx取相反方向
			 * 小球运动到上界面或下界面时,zx不变,zy取相反方向
			 */
			if(x<0||x>getWidth()-50){  //如果小球
				zx=-zx;
			}
			if(y<0||y>getHeight()-50){
				zy=-zy;
			}
			x=x+zx;
			y=y+zy;
			repaint();//重新调用paint方法
		}
	}

完整代码
Window.java

import javax.swing.JFrame;

public class Window extends JFrame{
	public Window() {
		setTitle("会跳的小球");
		MyJpanel jp=new MyJpanel();
		add(jp);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setBounds(100,100,400,400);
		setVisible(true);
		Thread t=new Thread(jp);
		t.start();
	}
	public static void main(String[] args) {
		new Window();
	}
}

MyJpanel.java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JPanel;

public class MyJpanel extends JPanel implements Runnable {
	int x=0;
	int y=100;
	int zx=5;	//小球每次跳动的x方向位移
	int zy=2;	//小球每次跳动的y方向位移
	@Override
	public void paint(Graphics g) {
		g.setColor(getBackground());//设置填充色为背景色
		g.fillRect(0, 0, 400, 400);	//设置矩形
		g.setColor(Color.GREEN);	//设置绿色
		g.fillOval(x, y, 50, 50);//绘制50的圆
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			try {
				Thread.sleep(20);	//小球每0.02秒跳动一次
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			/*
			 * 小球运动到左界面或右界面时,zy不变,zx取相反方向
			 * 小球运动到上界面或下界面时,zx不变,zy取相反方向
			 */
			if(x<0||x>getWidth()-50){  //如果小球
				zx=-zx;
			}
			if(y<0||y>getHeight()-50){
				zy=-zy;
			}
			x=x+zx;
			y=y+zy;
			repaint();//重新调用paint方法
		}
	}

}

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值