事件监听机制的特点:
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);
}
}
});
}
}