[英]Key Pressed Event
我想为JButton添加一个KeyEventListener ,它响应Enter键,使用以下代码段:
private void jButton3KeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == 10) {
eventRegister();
}
}
我按空格键而不是输入,if条件设置为true并调用eventRegister
。 为什么? 我怎么能阻止这种方式?
不要将KeyListener
或MouseListener
用于JButton
或JButtons JComponent
,这些事件是在API或ButtonsModel
,每个都可以测试,并且consume()
了KeyEvent
consume()
JButton
在KeyBindings中实现了ENTER和SPACE键作为加速器
从KeyBindings
删除SPACE
,但不建议,我不会混淆用户,肯定取决于
您应该使用KeyBinding而不是KeyListeners。
但即使你不是,你的当前代码也应该像这个例子一样工作。
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
JButton button=new JButton("do something");
button.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent evt) {
if (evt.getKeyCode() == 10) {
System.out.println("it is ten");
}
}
});
frame.getContentPane().add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
如果您不会发布可用于重现问题的完整(但简短)示例,那么几乎不可能说出您做错了什么。
(如果您添加有关代码的更多信息,我将尝试编辑此答案)。
试着用
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
....
“按下按键”和“按键释放”事件是较低级别的,取决于平台和键盘布局。
由于java是跨平台的,因此不要对键盘代码使用硬编码值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.