黑马程序员技术交流社区
标题:
同时按下Ctrl和Enter键,getKeyCode()方法到底将返回哪个键?
[打印本页]
作者:
李大强
时间:
2013-2-7 17:54
标题:
同时按下Ctrl和Enter键,getKeyCode()方法到底将返回哪个键?
本帖最后由 李大强 于 2013-2-7 17:57 编辑
当给一个按钮添加键盘监听器的时候,用getKeyCode()方法将返回哪一个键被按下,
但如果同时按下Ctrl和Enter键,此时再调用此方法将到底返回哪一个键呢?下面的程序中怎么能确保该方法将最终返回Enter键呢?
import java.awt.*;
import java.awt.event.*;
class MouseAndKeyEvent
{
private Frame f;
private Button but;
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");
f.add(but);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//给But添加一个键盘监听。
but.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)//此时一共有两个键被同时按下,你怎么保证‘e.getKeyCode()“返回的键不是CTRL呢?
//怎么确保返回的就是Enter呢?
System.out.println("ctrl+enter is run");
}
});
}
public static void main(String[] args)
{
new MouseAndKeyEvent();
}
}
作者:
念满
时间:
2013-2-8 15:25
boolean isControlDown()返回 Control 修饰符在此事件上是否为 down。
int getKeyCode()返回与此事件中的键关联的整数 keyCode。
字符经常是通过一系列按键(如‘shift’+‘a’)产生的,按下键事件和键入键事件的映射关系可能是多对一或多对多的
针对if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER) System.exit(0);先按下enterl键再按ctrl键,此时并不会触发System.exit(0);动作,
并且你在此句上面再写一句System.out.println(KeyEvent.getKeyText(e.getKeyCode())+".."+e.getKeyCode());
先按下enterl键再按ctrl键会出现Ctrl..17 Enter..10;按一个键getKeyCode()就会返回键关联的整数;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2