學習處理事件時,必須很好的掌握事件源,監視器,處理事件的接口
1.事件源
能夠產生java認可事件的對象都可稱為事件源,也就是說事件源必須是對象
2.監視器
監視事件源,以便對發生的事件做出處理
如:對文本框,這個方法為:
addActionListener(監視器);
3.處理事件的接口
為了讓監視器這個對象能對事件源發生的事件進行處理,創建該監視器對象的類必須聲明實現相應的接口,即必須在類體中給出該接口中所有方法的方法體
java.awt.event包中提供了許多事件類和處理各種事件的接口。
對於文本框,這個接口的名字是ActionListener,這個接口的唯一方法為:public void actionPerformed(ActionEvent e)
為了能監視到ActionEvent類型的事件,事件源必須使用addActionListener方法獲得監視器,創建監視器的類必須實現接口ActionListener
ActionEvent類有如下常用方法:
1. public Object getSource()
ActionEvent對象調用該方法可以獲取發生ActionEvent事件的事件源對象的引用
2. public String getActionCommand()
ActionEvent對象調用該方法可以獲取發生ActionEvent事件時,和該事件相關的一個命令字符串
注意:創建監視器對象的類必須聲明實現相應的接口:
class A implements xxxListener
實戰演練:當用戶在文本框text1中輸入英語單詞並按Enter鍵,文本框text3中立即顯示漢語意思;在文本框text2中中輸入漢語單詞並按Enter鍵后,文本框text3中立即顯示英文意思代碼如下:
import java.awt.*; import java.awt.event.*; class Mywindow extends Frame implements ActionListener { TextField text1,text2,text3; Mywindow(String s){ setTitle(s); setLayout(new FlowLayout()); text1=new TextField(8); text2=new TextField(8); text3=new TextField(15); add(text1); add(text2); add(text3); text1.addActionListener(this); text2.addActionListener(this); setBounds(100,100,150,150); setVisible(true); validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==text1) { String word=text1.getText(); if(word.equals("boy")) { text3.setText("男孩"); } else if(word.equals("girl")) { text3.setText("女孩"); } else if(word.equals("sun")) { text3.setText("太陽"); } else { text3.setText("沒有該單詞"); } } else if(e.getSource()==text2) { String word=text2.getText(); if(word.equals("男孩")) { text3.setText("boy"); } else if(word.equals("女孩")) { text3.setText("girl"); } else if(word.equals("太陽")) { text3.setText("sun"); } else { text3.setText("沒有該單詞"); } } } } public class Example3 { public static void main(String[] args){ Mywindow win=new Mywindow("漢英互譯"); } }