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();
		}
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章