关于ActionPerformed和ActionEvent

时间:2013-07-28 19:48:37

标签: java swing actionlistener jtextfield actionevent

我还没有完全理解一些java概念,如Listeners和Adapters等,我最近在寻找一种方法来执行一些代码,当我按下Enter时,JTextField有焦点,我找到了这个代码:

JTextField.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Enter pressed");
    }
}
);

这段代码工作正常,但我不清楚JTextField如何知道我想按Enter键时执行代码。我猜测JTextField已在其代码中定义了哪些事件(如Enter press)它将“回答”。我希望有人可以帮我澄清这个疑问

2 个答案:

答案 0 :(得分:2)

  • ENTER key已实施为KeyBindingsJFormattedTextFieldJTextFieldJPasswordField
  • JComponent(字段接受)
  • 此通知程序通过调用ActionListener(通知程序,API中的方法)生成事件,对于a.m。ActionListener您可以通过添加JComponent
  • 来监听此事件
  • 另一个ENTER key甚至可以从AWT/Swing Listeners到两个或更多JComboBox,例如ActionListener。来自ItemListenerJComponent
  • KeyBindings
  • 大多数Swing KeyBindings已经实现了公共/标准加速器,类似于MS Windows(MsOffice等...),这些关键事件在Swing中实现为KeyBindings
  • 您可以添加,更改,阻止在API中实现的事件。或添加,使用KeyListener
  • 定义自己的密钥快捷方式
  • 关于使用{{1}}代替{{1}}(这里有Q& A串)的良好实践

答案 1 :(得分:0)

在java GUI中,用户监听(称为Listener)Actions。有很多侦听器可用于特定的GUI。例如,对于Textfield,可以侦听actio事件。 ActionEvent触发一个监听该事件的GUI,因此无论何时单击一个聚焦的GUI,它都会响应。