當前位置:編程學習大全網 - 源碼下載 - Xmultiwindow源代碼

Xmultiwindow源代碼

導入Java . awt . *;

導入Java . awt . event . *;

導入Java . awt . geom . *;

導入Java . util . *;

導入javax . swing . *;

/**

*多線程,小球演示。打開Windows任務管理器查看線程變化。可以搜索,運行()方法/。開始()

*

*杜:程序技巧經驗:所謂生成壹個小球就是新的對象,它的屬性攜帶了球的坐標、顏色、容器等參數。

*

*壹個類,其屬性用作參數容器,其功能由方法完成....

* */

//運行該類

公共類BouncePress {

//

公共靜態void main(String[] args) {

JFrame frame = new BouncePressFrame();//生成窗口。執行施工。-商業邏輯。

frame . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);//類似於

//窗口

//監聽器

frame . show();

}

}

類BouncePressFrame擴展JFrame {

私人棒球場畫布畫布;

public BouncePressFrame() {

setSize(600,500);//窗口大小

setTitle(“彈跳球”);

container content pane = getContentPane();// Swing的窗口不能直接放東西,只能放在上面的ContentPane上。

canvas = new ball press canvas();//生成新面板。-帆布

contentPane.add(canvas,BorderLayout。中心);//將此面板添加到窗口中央。

JPanel button panel = new JPanel();//生成新面板。-按鈕面板

//調用此類方法addButton。

添加按鈕(buttonPanel,"開始",//生成按鈕"開始"--添加面板按鈕面板。

new action listener(){//|-& gt;將按鈕綁定到操作監聽器。

球容器對象執行的公共void操作(actioneveventevt) {/|的。

addBall(線程。NORM_PRIORITY - 4,color . black);//處理事件時,執行- addBall()方法。-& gt;生成小球(參數對象)->;添加到列表->開始畫球。

}

});//按壹次,addBall()壹次->生成壹個新球->添加到列表->開始繪制這個新球。

//-& gt;BallPressThread-> Ball(參數對象)的Run()。move ()->每次畫的時候,先動,再判斷,再畫。

//-& gt;BallPressCanvas類的Canvas對象。paint()->;自動調整BallPressCanvas類的paintComponent(Graphics)。

// g)方法。

//-& gt;在這個方法中,所有的球,第I個球,從列表中循環取出,-->;調整棒球場。

// .draw()方法->;通過調整Graphics2D方法繪制壹個球。-使用顏色/

addButton(buttonPanel," Express ",new ActionListener() {

public void action performed(ActionEvent evt){

addBall(線程。NORM_PRIORITY + 2,color . red);

}

});

addButton(buttonPanel," Close ",new ActionListener() {

public void action performed(ActionEvent evt){

system . exit(0);

}

});

contentPane.add(buttonPanel,BorderLayout。南);

}

public void addButton(容器c,字符串標題,ActionListener偵聽器){

JButton button = new JButton(標題);//生成壹個按鈕。

c.add(按鈕);//添加到容器中。

button.addActionListener(監聽器);//按鈕來綁定操作偵聽器。

}

/* *主要經營方式。*/

public void addBall(int priority,Color color) {

//生成壹個小球(參數對象)

棒球場b =新棒球場(帆布,彩色);//生成壹個BallPress對象,進位並初始化。

//畫壹個球形的球,必選參數:容器組件,必選顏色-黑色/紅色。

//球被添加到列表中。

canvas . add(b);//向面板畫布的ArrayList添加壹個BallPress對象。

ballpress thread thread = new ballpress thread(b);//生成壹個BallPressThread對象,壹個畫球的線程類。傳入BallPress對象(它攜帶繪制球所需的信息。

//容器,顏色參數)。

thread.setPriority(優先級);

thread . start();//調用run(),球開始移動

//拉球線程開始。-& gt;BallPressThread的run()->;球(參數對象)。move ()->先動,再畫。canvas . paint-& gt;棒球場畫布類

}

}

//畫球的線程類。

class BallPressThread擴展線程{

私人棒球場b;

公共滾珠壓力線(滾珠壓力桿){

b = aBall

}

//抽球開始。

公共無效運行(){

嘗試{

for(int I = 1;我& lt= 1000;I++) {//畫1000次。

b . move();//每次畫的時候,先動,再判斷,再畫。

睡眠(5);//所以比Bounce.java的球移動的慢。

}

} catch (InterruptedException e) {

}

}

}

// swing panel類。

//Function 1)這個類的Panel對象。paint()方法->;自動繪制面板,並自動調整paintComponent(圖形

// g)方法,->重寫此方法以繪制面板(及其組件)。

//Role 2)這個類對象的屬性ArrayList balls——balls(參數對象)的容器。

class BallPressCanvas擴展JPanel {

私有數組列表balls = new ArrayList();

public void add(BallPress b) {

balls . add(b);//在數組列表中添加壹個球。當您按下按鈕並添加多個球時,它們都保存在此列表中。

}

//覆蓋javax.swing.JComponent的paintComponent()方法

// paint()方法自動調用此方法。

public void paint component(Graphics g){

super . paint component(g);

graphics 2d G2 =(graphics 2d)g;

for(int I = 0;我& ltballs . size();I++) {//循環

ball press b =(ball press)balls . get(I);//從列表中取出第I個球,

b . draw(G2);//畫這個球。

}

}

}

/**

*畫壹個球。

*

*在畫布上畫壹個彩色的小球。

*

*屬性,可以用來攜帶畫球所需的參數。

*

*

*

* @作者杜康安

*

*/

班級棒球場{

私有組件畫布;

私彩色彩;

private int x = 0;

private int y = 0;

private int dx = 2;

private int dy = 2;

//構造初始化容器顏色參數。

公共棒球場(成分c,顏色)

canvas = c;

color = aColor

}

//設置位置,畫球。

公共無效繪制(Graphics2D g2) {

g2.setColor(顏色);

g2.fill(新Ellipse2D。Double(x,y,15,15));// ellipse:橢圓

}

//移動球。

//每次畫的時候,先動,再判斷,再畫。

//每次執行這個方法,畫出球的起點坐標(x,y),每次加+2,即向右下對角移動。

公共void移動(){

x+= dx;//x = x+dx;畫出球的起點坐標(x,y),每個坐標+2,即向右下對角移動。

y+= dy;//y = y+dy;

if(x & lt;0) {//球已經到了左邊界。答應,從左邊界開始畫。

x = 0;

dx =-dx;//球橫坐標的變化值反過來。開始反向運動。

}

if(x+15 & gt;= canvas.getWidth()) {//球的右邊已經到了畫板的右邊。

x = canvas . getwidth()-15;

dx =-dx;//開始反向運動。

}

if(y & lt;0) {//保證,從頂框抽取。

y = 0;

dy =-dy;

}

if(y+15 & gt;= canvas.getHeight()) {//球已經到了畫板的頂部。

y = canvas . get height()-15;

dy =-dy;

}

canvas . paint(canvas . get graphics());//繪制面板對象畫布-(以及其上的所有組件)

///.paint()方法,自動調用。

}

}

/*導入Java . awt . *;

導入Java . awt . event . *;

導入Java . awt . geom . *;

導入Java . util . *;

導入javax . swing . *;

*//**

*單線程,小球demo無法搜索,run()方法/。開始()

*//*

公共類反彈{

公共靜態void main(String[] args) {

JFrame frame = new bounce frame();

frame . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);//類似於

//窗口

//監聽器

frame . show();

}

}

不懂再問。。。

  • 上一篇:AI如何繪制壹個立體盒子?怎麽使用AI繪制立體盒子?
  • 下一篇:玩飛飛問題啊~!
  • copyright 2024編程學習大全網