/*
鼠标键盘事件
*/
import java.awt.*;
import java.awt.event.*;
class MouseAndKeyEvent {
private Frame f; //定义该图形中所需的 窗体组件 的引用
private Button but; //定义该图形中所需的 按钮组件 的引用
private TextField tf; //定义该图形中所需的 文本框组件 的引用
MouseAndKeyEvent() {
init();
}
public void init() {
f = new Frame("my frame");
f.setBounds(300, 100, 600, 500); //窗体的基本设置
f.setLayout(new FlowLayout());
but = new Button("my button");
tf = new TextField(20);
f.add(tf);
f.add(but);
myEvent(); //加载一下窗体上的事件
f.setVisible(true); //显示窗体
}
public void myEvent() {
f.addWindowListener(new WindowAdapter() { //匿名内部类
public void windowClosing(WindowEvent e) { //窗口关闭监听
System.exit(0);
}
});
but.addMouseListener(new MouseAdapter() { //为按钮添加鼠标事件
private int count = 1; //匿名内部类中定义,不是局部变量
private int clickCount = 1;
public void mouseEntered(MouseEvent e) { //鼠标进入监听
System.out.println("鼠标进入到该组件 " + (count ++));
}
public void mouseClicked(MouseEvent e) { //鼠标点击监听
if(e.getClickCount() == 2)
System.out.println("双击动作 " + (clickCount ++));
}
});
but.addActionListener(new ActionListener() { //按钮活动监听
public void actionPerformed(ActionEvent e) {
System.out.println("action ok");
}
});
but.addKeyListener(new KeyAdapter() { //键盘监听
public void keyPressed(KeyEvent e) {
//if(e.getKeyCode() == 27) //ESC
if(e.getKeyCode() == KeyEvent.VK_ESCAPE) //ESC
System.exit(0);
if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_ENTER) //组合键
System.out.println("Ctrl + Enter 组合键");
//System.out.println(e.getKeyText(e.getKeyCode()) + "...." + e.getKeyCode());
}
});
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if(!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)){ //如果 非数字
System.out.println(code + " 。。。 不符合规定");
e.consume(); //取消此事件
}
}
});
}
}
public class MouseAndKeyEventDemo {
public static void main(String[] args) {
new MouseAndKeyEvent();
}
}