检测用户何时在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中按下回车的主要内容,如果未能解决你的问题,请参考以下文章