不同的事件源可以產(chǎn)生不同類別的事件。例如,按鈕可以發(fā)送一個(gè)ActionEvent對(duì)象,而窗口可以發(fā)送WindowEvent對(duì)象。

創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都10年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都上千多家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。
AWT時(shí)間處理機(jī)制的概要:
1. 監(jiān)聽(tīng)器對(duì)象是一個(gè)實(shí)現(xiàn)了特定監(jiān)聽(tīng)器接口(listener interface)的類的實(shí)例。
2. 事件源是一個(gè)能夠注冊(cè)監(jiān)聽(tīng)器對(duì)象并發(fā)送事件對(duì)象的對(duì)象。
3. 當(dāng)事件發(fā)生時(shí),事件源將事件對(duì)象傳遞給所有注冊(cè)的監(jiān)聽(tīng)器。
4. 監(jiān)聽(tīng)器對(duì)象將利用事件對(duì)象中的信息決定如何對(duì)事件做出響應(yīng)。
下面是監(jiān)聽(tīng)器的一個(gè)示例:
ActionListener listener = ...;
JButton button = new JButton("OK");
button.addActionListener(listener);現(xiàn)在,只要按鈕產(chǎn)生了一個(gè)“動(dòng)作事件”,listener對(duì)象就會(huì)得到通告。對(duì)于按鈕來(lái)說(shuō),正像我們想到的,動(dòng)作事件就是點(diǎn)擊按鈕。
為了實(shí)現(xiàn)ActionListener接口,監(jiān)聽(tīng)器類必須有一個(gè)被稱為actionPerformed的方法,該方法接收一個(gè)ActionEvent對(duì)象參數(shù)。
class MyListener implements ActionListener
{
...;
public void actionPerformed(ActionEvent event)
{
//reaction to button click goes here
}
}只要用戶點(diǎn)擊了按鈕,JButton對(duì)象就會(huì)創(chuàng)建一個(gè)ActionEvent對(duì)象,然后調(diào)用listener.actionPerformed(event)傳遞事件對(duì)象。可以將多個(gè)監(jiān)聽(tīng)器對(duì)象添加到一個(gè)像按鈕這樣的事件源中。這樣一來(lái),只要用戶點(diǎn)擊按鈕,按鈕就會(huì)調(diào)用所有監(jiān)聽(tīng)器的actionPerformed方法。
實(shí)例:處理按鈕點(diǎn)擊事件
為了加深對(duì)事件委托模型的理解,下面以一個(gè)響應(yīng)按鈕點(diǎn)擊事件的簡(jiǎn)單示例來(lái)說(shuō)明所需要知道的細(xì)節(jié)。在這個(gè)示例中,想要在一個(gè)面板中放置三個(gè)按鈕,添加三個(gè)監(jiān)聽(tīng)器對(duì)象用來(lái)作為按鈕的動(dòng)作監(jiān)聽(tīng)器。
在這個(gè)情況下,只要用戶點(diǎn)擊面板上的任何一個(gè)按鈕,相關(guān)的監(jiān)聽(tīng)器對(duì)象就會(huì)接收到一個(gè)ActionEvent對(duì)象,它表示有個(gè)按鈕被點(diǎn)擊了。在示例程序中,監(jiān)聽(tīng)器對(duì)象將改變面板的背景顏色。
在演示如何監(jiān)聽(tīng)按鈕點(diǎn)擊事件之前,首先需要講解一下如何創(chuàng)建按鈕以及如何將他們添加到面板中。
可以通過(guò)在按鈕構(gòu)造器中指定一個(gè)標(biāo)簽字符串、一個(gè)圖標(biāo)或兩項(xiàng)都指定來(lái)創(chuàng)建一個(gè)按鈕。下面是兩個(gè)示例:
JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton(new ImageIcon("blue-ball.gif"));將按鈕添加到面板中需要調(diào)用add方法:
JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton("Blue");
JButton redButton = new JButton("Red");
buttonPanel.add(yellowButton);
buttonPanel.add(blueButton);
buttonPanel.add(redButton);
至此,知道了如何將按鈕添加到面板上,接下來(lái)需要增加讓面板監(jiān)聽(tīng)這些按鈕的代碼。這需要一個(gè)實(shí)現(xiàn)了ActionListener接口的類。如前所述,應(yīng)該包含一個(gè)actionPerformed方法,其簽名為:
public void actionPerformed(ActionEvent event)
當(dāng)按鈕被點(diǎn)擊時(shí),希望將面板的背景顏色設(shè)置為指定的顏色。這個(gè)顏色存儲(chǔ)在監(jiān)聽(tīng)器類中:
class ColorAction implements ActionListener
{
public ColorAction(Color c)
{
backgroundColor = c;
}
public void actionPerformed(actionEvent event)
{
//set panel background color
}
private Color backgroundColor;
}
然后,為每種顏色構(gòu)造一個(gè)對(duì)象,并將這些對(duì)象設(shè)置為按鈕監(jiān)聽(tīng)器。
ColorAction yelloAction = new ColorAction(Color.YELLOW); ColorAction blueAction = new ColorAction(Color.BLUE); ColorAction redAction = new ColorAction(Color.RED); yellowButton.addActionListener(yellowAction); blueButton.addActionListener(blueAction); redButton.addActionListener(redAction);
例如,如果一個(gè)用戶在標(biāo)有“Yellow”的按鈕上點(diǎn)擊了一下,yellowAction對(duì)象的actionPerformed方法就會(huì)被調(diào)用。這個(gè)對(duì)象的backgroundColor實(shí)例域被設(shè)置為Color.YELLOW,現(xiàn)在就將面板的背景顏色設(shè)置為黃色。
這里還有一個(gè)需要考慮的問(wèn)題。ColorAction對(duì)象不能訪問(wèn)buttonpanel變量。可以采用兩種方式解決這個(gè)問(wèn)題。一個(gè)是將面板存儲(chǔ)在ColorAction對(duì)象中,并在ColorAction的構(gòu)造器中設(shè)置它;另一個(gè)是將ColorAction作為ButtonPanel類的內(nèi)部類,如此,它的方法就自動(dòng)地?fù)碛性L問(wèn)外部面板的權(quán)限了。
下面說(shuō)明一下如何將ColorAction類放在ButtonFrame類內(nèi)。
class ButtonFrame extends JFrame
{
...
private class ColorAction implents ActionListener
{
...
public void actionPerformed(ActionEvent event)
{
buttonPanel.setBackground(backgroundColor);
}
private Color backgroundColor;
}
private Jpanel buttonPanel;
}
以上這篇java處理按鈕點(diǎn)擊事件的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。
本文標(biāo)題:java處理按鈕點(diǎn)擊事件的方法
文章位置:http://chinadenli.net/article4/jpcsie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、服務(wù)器托管、移動(dòng)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、定制開(kāi)發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)