public class KeyEventt {
private Frame f;
private Button but;
KeyEventt()
{
init();
}
public void init()
{
f = new Frame("my frame");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
but = new Button("my button");
f.add(but);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//在按钮上注册了一个键盘监听,我按下键盘时当前事件源那个键盘监听就被触发了,按钮是事件源
but.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e)
{
//
if (e.getKeyCode()==e.VK_ENTER && e.isControlDown()) { //如果你按下了Control键并且e.getKeyCode()的值==e.VK_ENTER
System.out.println("crtl+enter运行了");
}
});
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new KeyEventt();
}
}
代码的运行效果是:
当我按住Control键再敲回车键ENTER 时,,就输出字符串"crtl+enter运行了",,就是按下crtl+enter组合键输出 "crtl+enter运行了"
问题:
e.getKeyCode()==e.VK_ENTER && e.isControlDown() 这句话怎么理解,,,
我的理解是 :e.getKeyCode()==e.VK_ENTER 是你按下的键盘,的键盘码是e.VK_ENTER ,,,而e.VK_ENTER 的键盘码是27,,这个号理解,,,但是e.isControlDown() 是判断你按下的键盘是否是Control 键....我的疑惑是,,,我首先按下的是Control 键然后按下ENTER键 ,那么 e.getKeyCode() 获取的键盘码是Control 键. 的键盘码还是ENTER 键的键盘码,,,这个我一直想不通,,,
|