GUI的監聽機制(例子:只能輸入數字)

事件監聽機制的特點:

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);
}
}
});
}


}




發佈了35 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章