Java的圖形用戶界面——事件處理(四)

事件:Java語言將每一個鍵盤或鼠標的操作定義爲一個“事件”
事件響應:當事件發生時程序應該作出何種響應
事件處理的模型:

  • 事件源:產生事件的組件加叫事件源
  • 事件對象:描述系統中發生了什麼的對象
  • 事件監視器:對事件進行處理的類

Java有20多個預定義的事件類,它們包含了所有組件上可能發生的事件。每一個事件都有一個相應的事件接口,事件接口中的事件處理方法完成對事件的處理
在這裏插入圖片描述在這裏插入圖片描述
事件處理一般方法:

  • 創建將要產生事件的組件對象
  • 構造實現相應事件監視器接口的類,並創建事件監聽器對象
  • 爲組件對象增加事件監聽器對象:
    組件對象.addXxxListener(事件監聽器對象);
    如:button.addActionListener(this);

注意:接口中的方法都含有所產生的事件對象參數,使用該參數的getSource()方法可以得到產生該事件的事件源
例如:public void actionPerformed(ActionEvent evt);

事件處理

ActionEvent 與 ActionListener
當單擊按鈕、在文本域回車、選擇組合框中的項目、選擇菜單項時產生該事件
ActionListener接口中的方法:

  • void actionPerformed(ActionEvent);
    該事件在實際應用中經常被處理

ActionEvent中的常用方法:

  • String getActionCommand();
    //獲得與該動作相聯繫的組件的命令字符串名稱,組件對象可使用
    setActionCommand(String)方法進行設置,默認的命令字符串名稱是組件的標籤名稱 //使用該方法可實現不同組件共用同一段處理代碼

ItemEvent 與 ItemListener
當單選按鈕、複選按鈕、下拉列表框中的項目狀態發生變化時產生該事件
ItemListener接口中的方法:

  • void itemStateChanged(ActionEvent);

ItemEvent中的常用方法:

  • Object getItem();
    //返回返回受該事件影響的項目對象,據需要可將Object轉換爲相應的類型
    int getStateChange();
    //返回項目狀態發生變化的類型,取值:
    ItemEvent.SELECTED
    ItemEvent.DESELECTED

WindowEvent 與 WindowListener
WindowListener接口中的方法:

  • void windowActivated(WindowEvent);
    //處理窗口被設置爲當前活動窗口時觸發的事件

  • void windowDeactivated(WindowEvent);
    //處理窗口被設置爲非活動窗口時觸發的事件

  • void windowIconified(WindowEvent);
    //處理窗口最小化時觸發的事件

  • void windowDeiconified(WindowEvent);
    //處理窗口從最小化變爲正常大小時觸發的事件

  • void windowCloseing(WindowEvent);
    //處理用戶試圖關閉窗口時觸發的事件

  • void windowClosed(WindowEvent);
    //處理窗口被關閉時觸發的事件

WindowAdapter適配器
windowListener接口中含有較多的方法,實現時比較麻煩。爲此,Java提供了適配器類WindowAdapter,該類實現了WindowListener接口,可用該類或其子類創建監聽器
注意:凡含兩個以上方法的監聽器都有對應的適配器
適配器類實現一個對應的接口,只是方法爲空

事件適配器類(Adapter)
只實現接口所需要處理的方法<–>通過覆蓋
介於接口中的其它方法:系統會提供默認的方法
事件適配器類與事件監聽器接口的區別

  • 利用事件適配器類,只需實現所需處理的方法
  • 利用事件監聽器接口,必須實現所有的方法
    在這裏插入圖片描述

ListenSelectionEvent 與 ListSelectionListener
當列表框中的項目發生變化時產生該事件
ListSelectionListener接口中的方法:

  • void valueChanged(ListSelectionEvent);
    處理事件時常使用列表框(JList)對象本身提供的一些方法

ChangeEvent 與 ChangeListener
當進度條,滑動條、微調器、標籤窗格等組件的狀態發生變化時產生該事件
ChangeListener接口中的方法:

  • void stateChanged(ChangeEvent);

FocusEvent 與 FocusListener
當組件獲得或失去輸入焦點時產生該事件
FocusListener接口中的方法:

  • void focusGained(FocusEvent);
  • void focusLost(FocusEvent);

FocusEvent中的常用方法:

  • Component getOppositeComponent();

FocusAdapter適配器

MouseEvent 與 MouseListener
當在組件上進行鼠標基本操作時產生該事件
MouseListener接口中的方法:

  • void mousePressed(MouseEvent);
  • void mouseReleased(MouseEvent);
  • void mouseClicked(MouseEvent);
  • void mouseEntered(MouseEvent);
  • void mouseExited(MouseEvent);

MouseEvent中的常用方法:

  • int getButton(); //NOBUTTON,BUTTON1,BUTTON2,BUTTON3
  • boolean isAltDown();
  • boolean isControlDown();
  • boolean isShiftDown();
  • int getClickCount();
  • Point getPoint();
  • int getX();
  • int getY();
  • boolean isPopupTrigger();
    //是否是觸發彈出式菜單的鼠標操作

MouseAdapter適配器

MouseEvent 與 MouseMotionListener
當在組件上進行鼠標拖動或移動時產生該事件
MouseMotionListener接口中的方法:

  • void mouseDragged(MouseEvent);
  • void mouseMoved(MouseEvent);

MouseMotionAdapter適配器

KeyEvent 與 KeyListener
當組件上發生擊鍵時產生該事件
KeyListener接口中的方法:

  • void keyPressed(KeyEvent);
  • void keyReleased(KeyEvent);
  • void keyTyped(KeyEvent);

KeyEvent中的常用方法:

  • char getKeyChar(); //返回字符鍵值
  • int getKeyCode(); //返回整數鍵值
  • boolean isAltDown();
  • boolean isControlDown();
  • boolean isShiftDown();

注意:KeyEvent中定義了表示鍵的常量,如VK_l
KeyAdapter適配器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章