點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程第十三章匯總
13.5 應(yīng)用程序中的語(yǔ)義事件監(jiān)聽(tīng)器
實(shí)現(xiàn)語(yǔ)義事件監(jiān)聽(tīng)器的一個(gè)顯然的候選者就是在Skctcher程序中的SketchFrame類中支持菜單欄操作。當(dāng)我們?cè)谄渲械膫(gè)下拉式菜單中點(diǎn)擊一個(gè)菜單項(xiàng)時(shí),就會(huì)產(chǎn)生我們可以監(jiān)聽(tīng)到的語(yǔ)義事件,然后用它確定相應(yīng)的程序行為。
在構(gòu)造圖元對(duì)象時(shí),我們使舊elementTyPe和e1ementColor成員設(shè)置每個(gè)菜單項(xiàng)的狀態(tài)。只有對(duì)應(yīng)elementType中默認(rèn)類型的那個(gè)圖元類型菜單項(xiàng)設(shè)置為復(fù)選,這是因?yàn)閭鬟f給JRadioButtonMenultem構(gòu)造函數(shù)的自變雖比較后只產(chǎn)生一個(gè)True.顏色菜單項(xiàng)所使用的方法與之相同,但是要注意為了有效的比較,我們使用在Color類中定義的equals()方法。由于我們只使用在這個(gè)類中定義的Color常量值,所以可不必使用==,但是一旦使用的顏色不在這其中,就將不再操作。當(dāng)然,對(duì)于圖元類型項(xiàng)必須使用==,這是因?yàn)镮D是int類型的。
進(jìn)行整理后,我們可以為Elements菜單實(shí)現(xiàn)監(jiān)聽(tīng)器了,讓我們從類型菜單項(xiàng)開(kāi)始。
我們將增加一個(gè)內(nèi)置類,它將為指定圖元類型的菜單項(xiàng)定義監(jiān)聽(tīng)器。這個(gè)類將實(shí)現(xiàn)ActionListener接口,這是因?yàn)槲覀兿M憫?yīng)這些菜單項(xiàng)的操作行為。把下列定義作為內(nèi)置類添加到SketchFrame中:
//Handles element type menu items
class TypeListener implements AcLionLisener
{
//Constructor
TypeListener(int type)
{
this.type=type;
}
//sets the element type
public void actionPerformed(ActionEven:0)
(elementType=type; )
private int type; //Store the type for the menu
}
現(xiàn)在我們可以使用這個(gè)類的對(duì)象作為菜單項(xiàng)的監(jiān)聽(tīng)器。把下列代碼添加到SketchFrame構(gòu)造函數(shù)中的建立Elements菜單的類型菜單項(xiàng)代碼之后:
//Add type menu item listeners
lineItem.addActionListener(new TypeListener(LINE));
rectangleItem.addActionListener(new TypeListener(RECTANGLE));
circleItem.addActionListener(new TypeListener(RIRCLE)
curveItem.addActionListener(new TypeListener(CURVE));
為了把java.awt.event包加到SketcherFrarme類中,還需要增加一條import語(yǔ)句幣新編譯Sketcher ,看看它是如何操作的。
如何工作
與SketchFrame對(duì)象中設(shè)置當(dāng)前圖元類型沒(méi)有什么不同。監(jiān)聽(tīng)器類極其的簡(jiǎn)單。每個(gè)監(jiān)聽(tīng)器對(duì)象存儲(chǔ)與菜單項(xiàng)對(duì)應(yīng)的類型,它是由自變量傳遞給構(gòu)造函數(shù)的,當(dāng)發(fā)生事件時(shí)。actionPerformed()方法存儲(chǔ)SketchFrarme對(duì)象的。eletmentType成員中監(jiān)聽(tīng)對(duì)象的類型。
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |