我还没有完全理解一些java概念,比如监听器和适配器等,我最近正在寻找一种方法,当我在JTextField获得焦点时按下回车键时执行一些代码,我发现了这段代码:
JTextField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Enter pressed");
}
}
);
这段代码工作正常,但我不知道 JTextField 如何知道我希望在按 Enter 键时执行代码。我猜测 JTextField 已在其代码中定义了它将“应答”的事件(例如按 Enter 键)。希望有人能帮我解答这个疑惑
最佳答案
ENTER 键
实现为JFormattedTextField
、JTextField
、JPasswordField 的
KeyBindings
(字段接受)- 此通知程序通过调用 ActionListener(通知程序,API 中的方法)生成事件,对于上午的
JComponent
,您可以通过添加ActionListener
来监听此事件 - 另一个
JComponent
甚至可以通过ENTER 键
触发两个或多个AWT/Swing Listener
,例如对于来自ActionListener
和ItemListener
的 - 大多数 Swing
JComponent
都实现了通用/标准加速器,类似于 MS Windows(MsOffice 等...),这些按键事件被实现为KeyBindings
在 Swing - 您可以添加、更改、阻止那些在 API 中实现的事件。或者使用
KeyBindings
添加、定义自己的快捷键
- 关于使用
KeyBindings
而不是KeyListener
的良好实践(这里有一堆问答)
JComboBox
关于java - 关于 ActionPerformed 和 ActionEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17912167/