事件: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適配器