Java实现窗体中画布内容弹幕滚动

Java窗体类

package running;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class GameBegin extends JFrame{
	public static void main(String[] args) {
		GameBegin g= new GameBegin();
		MyPanle mp = new MyPanle();
		//线程带着画布去跑
		Thread t = new Thread(mp);
		//线程启动
		t.start();
		g.add(mp);
		//扩展:自动获取屏幕的宽高
		int scWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//自动获取屏幕宽
		int scHeight = Toolkit.getDefaultToolkit().getScreenSize().height;//自动获取屏幕高
		g.setSize(scWidth, scHeight);
		//手动获取屏幕宽
		//g.setSize(1920, 1080);
		g.setVisible(true);
		g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

Java画布类

package running;
import java.awt.Graphics;
/**
 * 实现线程
 * 1.继承Thread
 * 2.实现Readable(implements Readable)
 */
import java.awt.Toolkit;
import java.util.Random;

import javax.swing.JPanel;
public class MyPanle extends JPanel implements Runnable{
	//属性
	int x=Toolkit.getDefaultToolkit().getScreenSize().width;//自动获取屏幕宽
	int y=new Random().nextInt(100);
	public void paint(Graphics g){
		//super是父类
		super.paint(g);
		if(x<=0){
			x=500;
		}
		g.drawString("HELLOWROLD", x, y);
	}
	//跑的行为
	//重写run方法
	public void run(){
			while(true){
			//值越大跑的快
			x-=50;
			//线程阻塞
			//捕获异常 
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				// 记录日志
				e.printStackTrace();
			}
			//重画
			repaint();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/zhourj99/article/details/88054118