检测用户何时在Java中按下回车

Posted

技术标签:

【中文标题】检测用户何时在Java中按下回车【英文标题】:Detecting when user presses enter in Java 【发布时间】:2011-06-08 02:01:33 【问题描述】:

我有一个 JComboBox 的子类。我尝试使用以下代码添加关键侦听器。

addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent evt) if(evt.getKeyCode() == KeyEvent.VK_ENTER) System.out.println("Pressed"); );

但是,这不能正确检测用户何时按下键。它实际上根本没有被调用。我添加这个监听器错了吗?还有其他方法可以添加吗?

【问题讨论】:

请给我们看完整的代码,我可以知道为什么需要在组合框中跟踪输入吗? 该函数似乎没有问题,可能是您调用它的方式有问题。我们需要看更多的代码 @user489041,您不应该为此使用 KeyListener。 【参考方案1】:

关键事件不是在盒子本身上触发的,而是在它的编辑器上触发的。您需要将 keyListener 添加到 JComboBox 的编辑器中,而不是直接添加框:

comboBox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() 
    
        public void keyPressed(KeyEvent evt)
        
            if(evt.getKeyCode() == KeyEvent.VK_ENTER)
            
                System.out.println("Pressed");
            
        
    );

编辑:固定方法调用。

【讨论】:

【参考方案2】:

这不是正确的方法。 JComboBox 的编辑器是 JTextField。如果要处理 Enter 键,则将 ActionListener 添加到文本字段。

始终避免使用 KeyListener。

编辑:

comboBox.getEditorComponent().addActionListener( ... );

【讨论】:

@user489041,你有没有在 JButton 中添加过 ActionListener?那么代码是完全一样的。如果您还没有阅读 Swing 教程中关于“如何编写动作监听器”(download.oracle.com/javase/tutorial/uiswing/TOC.html) 的部分。 你需要comboBox.getEditor().addActionListener(...)

以上是关于检测用户何时在Java中按下回车的主要内容,如果未能解决你的问题,请参考以下文章

如何判断何时在 TextBox 中按下回车键?

当用户在文本框中按下回车键时如何不关闭表单

用户在文本框中按下回车的 JQuery 事件?

如何检测是不是在JS中按下回车键[重复]

检测按下的键何时是第一个字符

在 React Native 中按下回车时如何禁用在多行 TextInput 中插入新行