繁体   English   中英

关键事件

[英]Key Pressed Event

我想为JButton添加一个KeyEventListener ,它响应Enter键,使用以下代码段:

   private void jButton3KeyPressed(java.awt.event.KeyEvent evt) {
        if (evt.getKeyCode() == 10) {
           eventRegister();
        }
   }                                   

我按空格键而不是输入,if条件设置为true并调用eventRegister 为什么? 我怎么能阻止这种方式?

  • 不要将KeyListenerMouseListener用于JButtonJButtons 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM