進口?Java . awt . event . *;
進口?Java . awt . geom . *;
進口?Java . util . *;
進口?javax . swing . *;
/**
*?多線程,小球演示。打開Windows任務管理器,您可以看到線程的變化。?可以搜索,運行()方法/。開始()
*?
*?杜:?程序技巧的體驗:?所謂生產壹個小球,也就是?新的?它的類對象,其屬性攜帶小球的畫法?坐標,顏色,容器?等參數。
*?
*?其屬性用作參數容器的類。方法...完成該功能。
*?*/
//?跑步課
公?班級?彈力抑郁癥?{
//
公?靜電?作廢?main(String[]?args)?{
JFrame?框架?=?新的?BouncePressFrame();?//?生成窗口。執行施工。-商業邏輯。
frame . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);?//?相似?到
//?窗戶
//?聽眾
frame . show();
}
}
班級?BouncePressFrame?延伸?JFrame?{
私人?棒球場?畫布;
公?BouncePressFrame()?{
setSize(600,?500);?//?窗口大小
setTitle("彈跳?球”);
集裝箱?contentPane?=?getContentPane();?//?Swing的窗口不能直接放東西,只能放在它的ContentPane上。
畫布?=?新的?ball press canvas();?//?生成新面板。-帆布
contentPane.add(canvas,BorderLayout。中心);?//?窗口中心?添加此面板。
JPanel?buttonPanel?=?新的?JPanel();?//?然後生成壹個新面板。-按鈕面板
//?調用此類方法addButton。
addButton(按鈕面板,?“開始”,?//?生成壹個按鈕"開始"--添加面板按鈕panel。
新的?ActionListener()?{?//?|-& gt;系扣子?動作監聽器。
公?作廢?actionPerformed(ActionEvent?evt)?{?//?|?球容器對象的對象
addBall(線程。NORM_PRIORITY?-?4,?Color .黑色);?//?處理事件時,執行- addBall()方法。-& gt;生成小球(參數對象)->;添加到列表->開始畫球。
}
});?//?按壹次,addBall()壹次->生成壹個新球->添加到列表->開始繪制這個新球。
//?-& gt;BallPressThread-> Ball(參數對象)的Run()。move ()->每次畫的時候,先動,再判斷,再畫。
//?-& gt;BallPressCanvas類的Canvas對象。paint()->;自動調整BallPressCanvas類的paintComponent(Graphics)。
//?g)方法。
//?-& gt;在這個方法中,所有的球,第I個球,從列表中循環取出,-->;調整棒球場。
//?。draw()方法->;通過調整Graphics2D方法繪制壹個球。-使用顏色/
addButton(按鈕面板,?“快遞”,?新的?ActionListener()?{
公?作廢?actionPerformed(ActionEvent?evt)?{
addBall(線程。NORM_PRIORITY?+?2,?color . red);
}
});
addButton(按鈕面板,?“關閉”,?新的?ActionListener()?{
公?作廢?actionPerformed(ActionEvent?evt)?{
system . exit(0);
}
});
contentPane.add(buttonPanel,BorderLayout。南);
}
公?作廢?addButton(容器?c,?字符串?標題,?ActionListener?聽眾)?{
JButton?按鈕?=?新的?JButton(標題);?//?生成壹個按鈕。
c.add(按鈕);?//?添加到容器中。
button.addActionListener(監聽器);?//?系扣子?動作監聽器。
}
/**?主要經營方式。?*/
公?作廢?addBall(int?優先,?顏色?顏色)?{
//?壹代?球(參數對象)
棒球場?b?=?新的?棒球場(畫布,顏色);?//?生成壹個BallPress對象,攜帶並初始化它。
//?畫壹個球形的球,所需參數:容器組件,所需顏色-黑色/紅色。
//?小球加入?在列表中。
canvas . add(b);?//?面板畫布?在數組列表裏?添加壹個棒球場對象。
圓珠筆線?線程?=?新的?滾珠壓力螺紋(b);?//?生成BallPressThread對象,壹個繪制球的線程類。傳入BallPress對象(它攜帶繪制球所需的信息。
//?容器,顏色參數)。
thread.setPriority(優先級);
thread . start();?//?打電話?run(),?球?開始?去哪?移動
//?球拉絲開始。-& gt;BallPressThread的run()->;球(參數對象)。move ()->先動,再畫。canvas . paint-& gt;棒球場畫布類
}
}
//?繪制球的線程類。
班級?圓珠筆線?延伸?線程?{
私人?棒球場?b;
公?BallPressThread(BallPress?aBall)?{
b?=?aBall
}
//?抽球開始。
公?作廢?run()?{
試試?{
為了什麽?(int?我?=?1;?我?& lt=?1000;?i++)?{?//?抽1000次。
b . move();?//?每次畫的時候,先動,再判斷,再畫。
睡眠(5);?//?所以比Bounce.java的球移動的慢。
}
}?接住?(中斷異常?e)?{
}
}
}
//?搖擺面板類。
//?函數1)?這種面板對象。paint()方法->;自動繪制面板,並自動調整paintComponent(圖形
//?g)方法,-->覆蓋此方法來繪制面板(及其組件)。
//?角色2)?這種對象?屬性數組列表?Balls -兼做小球(參數對象)的容器。
班級?棒球場?延伸?JPanel?{
私人?數組列表?蛋蛋?=?新的?ArrayList();
公?作廢?補充(棒球服?b)?{
balls . add(b);?//?向數組列表中添加壹個球。當您按下按鈕並添加多個球時,它們都保存在此列表中。
}
//?重寫?Javax.swing.JComponent的?PaintComponent()方法。
//?paint()方法自動調用這個方法。
公?作廢?paintComponent(圖形?g)?{
super . paint component(g);
Graphics2D?g2?=?(Graphics2D)?g;
為了什麽?(int?我?=?0;?我?& lt?balls . size();?i++)?{?//?傳播
棒球場?b?=?(棒球場)?balls . get(I);?//?從列表中取出第壹個球,
b . draw(G2);?//?畫這個球。
}
}
}
/**
*?畫壹個球。
*?
*?妳在線嗎?在畫布上畫壹個彩色的小球。
*?
*?屬性,該屬性可用於攜帶繪制球所需的參數。
*?
*?
*?
*?@作者?杜孔安
*?
*/
班級?棒球場?{
私人?組件?畫布;
私人?顏色?顏色;
私人?int?x?=?0;
私人?int?y?=?0;
私人?int?dx?=?2;
私人?int?dy?=?2;
//?結構?初始化?集裝箱?顏色?參數。
公?棒球場(組件?c,?顏色?aColor)?{
畫布?=?c;
顏色?=?aColor
}
//?擺好位置,抽球。
公?作廢?draw(Graphics2D?g2)?{
g2.setColor(顏色);
g2.fill(新?Ellipse2D。Double(x,y,?15,?15));?//?橢圓:卵形
}
//?移動球。
//?每次畫的時候,先動,再判斷,再畫。
//?每次執行這個方法,畫出球的起點坐標?(x,y),?每次+2,?也就是斜向右下方移動。
公?作廢?move()?{
x?+=?dx;?//?x = x+dx;?畫出球的起始坐標?(x,y),?每次+2,?也就是斜向右下方移動。
y?+=?dy;?//?y = y+dy;
如果?(x?& lt?0)?{?//?球到達了左邊界。答應,從左邊界開始畫。
x?=?0;
dx?=?-dx;?//?球的橫坐標的變化值反過來。開始反向運動。
}
如果?(x?+?15?& gt=?canvas.getWidth())?{?//?球的右側到達了畫板的右側。
x?=?canvas.getWidth()?-?15;
dx?=?-dx;?//?開始反向運動。
}
如果?(y?& lt?0)?{?//?承諾,從頂框開始。
y?=?0;
dy?=?-dy;
}
如果?(y?+?15?& gt=?canvas.getHeight())?{?//?球已經到達了繪圖板的頂部。
y?=?canvas.getHeight()?-?15;
dy?=?-dy;
}
canvas . paint(canvas . get graphics());?//?繪制面板對象畫布-(以及其上的所有組件)
//?//.paint()方法,自動調用。
}
}
/*導入?Java . awt . *;
進口?Java . awt . event . *;
進口?Java . awt . geom . *;
進口?Java . util . *;
進口?javax . swing . *;
*//**
*?單線程,小球演示?無法搜索,請運行()方法/。開始()
*//*
公?班級?彈跳?{
公?靜電?作廢?main(String[]?args)?{
JFrame?框架?=?新的?bounce frame();
frame . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);?//?相似?到
//?窗戶
//?聽眾
frame . show();
}
}