事件監聽機制的特點:
1.事件源
2, 事件
3,監聽器
4,事件處理
事件源:就是awt包或者swing包中的那些圖形界面組件.
事件:每一個事件源都有自己特有的對應事件和共性事件.
監聽器:將可以觸發某事件的動作(不止一個動作)都已經封裝到了監聽器中.
事件處理:就是重寫Listener或Adapter中方法,對具體的時間進行具體的處理.
適配器是實現了Listener的抽象類,因爲Listener是接口,方法太多,實現太麻煩.
就用Adapter進行實現,重寫方法,但方法體是空的.這樣就可以直接繼承適配器重寫要用的方法就行.
適配器就是可以簡化代碼.
下面一個實現鍵盤監聽的例子:
import java.awt.*;
import java.awt.event.*;
class KeyEventDemo {
public static void main(String[] args) {
KeyEventDemo ke = new KeyEventDemo();
}
KeyEventDemo(){
init();
}
private Frame frame;
private Label label1;
private Label label2;
private TextField tf;
public void init(){
frame = new Frame("my Window");
frame.setBounds(200,300,400,500);
frame.setLayout(new FlowLayout());
label1 = new Label("賬號:");
frame.add(label1);
tf = new TextField(30);
frame.add(tf);
label2 = new Label("只能輸入數字!");
label2.setVisible(false);
frame.add(label2);
frame.setVisible(true);
myEvent();
}
public void myEvent(){
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
tf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if((e.getKeyCode()>KeyEvent.VK_0 && e.getKeyCode()<KeyEvent.VK_9)
||e.getKeyCode()==KeyEvent.VK_BACK_SPACE){
label2.setVisible(false);
//刷新窗體,隱藏lable
frame.setVisible(true);
}
else{
//忽略該事件,即撤銷非法的操作
e.consume();
//顯示警告標籤
label2.setVisible(true);
//刷新窗體,讓lables顯示
frame.setVisible(true);
}
}
});
}
}