西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)java → Java頁面設(shè)計(jì)之事件處理

Java頁面設(shè)計(jì)之事件處理

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時(shí)間:2012/12/2 21:10:33字體大。A-A+

作者:西西點(diǎn)擊:0次評論:0次標(biāo)簽: 事件處理

在JAVA程序設(shè)計(jì)中,事件的處理是非常重要的,尤其是在需要自定義事件和設(shè)計(jì)JavaBean時(shí).對事件的處理過程有一個完整的認(rèn)識對于編程是很有幫助的。

一、事件:用戶對程序的某一種功能性操作

Java中的事件主要有兩種:
1.組件類事件
componentEvent、ContainerEvent、WindowEvent、FocusEvent、PaintEvent、MouseEvent共六大類,

它們均是當(dāng)組件的狀態(tài)發(fā)生變化時(shí)產(chǎn)生。

2.動作類事件
ActionEvent、TextEvent、AdjustmentEvent、ItemEvent共四類。
Java中的事件類都包含在JDK的Java.awt.event包中。

二、事件編程:
用戶編程定義每個特定事件發(fā)生時(shí)程序應(yīng)做出何種響應(yīng),并且這些響應(yīng)代碼會在對應(yīng)的事件發(fā)生時(shí)由系統(tǒng)自動調(diào)用。

如果想要自定義一個事件,則必須提供一個事件的監(jiān)聽接口以及一個事件類。在JAVA中監(jiān)聽接口繼承java.util.EventListener,事件類繼承java.util.EventObject.很多基本的事件在編程環(huán)境中都已經(jīng)提供可以很方便使用,但是在自定義事件中必須要要了解這些。

當(dāng)你把界面都設(shè)計(jì)好了,總需要添加相應(yīng)的執(zhí)行動作給組件,在JAVA中有相應(yīng)的時(shí)間處理機(jī)制,叫做“監(jiān)聽器”,給組件添加相應(yīng)執(zhí)行動作的過程叫做“注冊”,其中的“監(jiān)聽器”是一個接口,里面包含了相應(yīng)的執(zhí)行函數(shù),要做的是自己實(shí)現(xiàn)其中的方法函數(shù),然后“注冊”給組件,通俗一點(diǎn)的話就是老媽讓我去買醬油,老媽不關(guān)心我會轉(zhuǎn)過幾天街道,會怎樣和老板到討價(jià)還價(jià)怎樣回家,老媽需要的最終結(jié)果是我能夠?qū)⑨u油交付到她的手中,期中買醬油的過程是我實(shí)現(xiàn)的,我就是事件處理機(jī)制里面的“監(jiān)聽器”接受老媽的指示,老媽讓我買醬油去,就是對應(yīng)將事件“注冊”給我,呵呵,又一次完美體現(xiàn)了JAVA中實(shí)現(xiàn)與接口分離。

JAVA中的組件事件有ActionEvent、KeyEvent、FocusEvent、ComponentEvent、MouseEvent、AdjustmentEvent等,每個組件支持其中的全部或者是一部分事件,相應(yīng)的事件有相應(yīng)的Listener來監(jiān)聽事件的發(fā)生并且實(shí)現(xiàn)接口的方法,程序員要做的事情就是創(chuàng)建一個事件的類對象,實(shí)現(xiàn)它里面的函數(shù),然后將它注冊給相應(yīng)的組件,下面用代碼演示一下:

1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.*;
4
5 public class ButtonDemo  {
6     private JFrame
7     frame=new JFrame("ButtonDemo");
8     private JButton
9     b1 = new JButton("按鈕1"),
10     b2 = new JButton("按鈕2");
11     private JTextField
12     txt = new JTextField(10);
13     //這里是使用一個匿名類來實(shí)現(xiàn)對按鈕的監(jiān)聽
14   private ActionListener bl = new ActionListener() {
15       //實(shí)現(xiàn)監(jiān)聽類中的抽象函數(shù)
16     public void actionPerformed(ActionEvent e) {
17       String name = ((JButton)e.getSource()).getText();
18       txt.setText(name);
19     }
20   };
21   public ButtonDemo () {
22       //將監(jiān)聽對象注冊給兩個按鈕
23     b1.addActionListener(bl);
24     b2.addActionListener(bl);
25     frame.setLayout(new FlowLayout());
26     frame.add(b1);
27     frame.add(b2);
28     frame.add(txt);
29     frame.setVisible(true);
30     frame.setSize(200,150);
31    
32   }
33   public static void main(String[] args) {
34    new ButtonDemo ();
35   }
36 }

監(jiān)聽接口中如果有不止一個函數(shù),而我只想實(shí)現(xiàn)其中的一個函數(shù)的時(shí)候,很顯示程序是不能運(yùn)行的,因?yàn)槟惚仨殞?shí)現(xiàn)接口當(dāng)中的所有函數(shù)的時(shí)候,才可以通過編譯,程序才可以跑起來,那應(yīng)該怎們辦納?呵呵,顯然JAVA語言設(shè)計(jì)者已經(jīng)考慮到了這一點(diǎn),所以提供了一個叫做“適配器”的家伙,它默認(rèn)實(shí)現(xiàn)了接口當(dāng)中的所有函數(shù),繼承“適配器”這個類,并覆蓋你所該興趣的那個函數(shù)就可以了:

1 class MyMouseListener extends MouseAdapter{
2 public void mouseClicked(MouseEvent e){
3 //實(shí)現(xiàn)當(dāng)點(diǎn)擊鼠標(biāo)時(shí)的動作
4 }
5 }

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)