【问题标题】:About ActionPerformed and ActionEvent关于 ActionPerformed 和 ActionEvent
【发布时间】:2013-07-28 19:48:36
【问题描述】:

我还没有完全理解一些 Java 概念,比如 Listeners 和 Adapters 等,我最近正在寻找一种方法来在 JTextField 具有焦点时按 Enter 键执行一些代码,我发现了这段代码:

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

这段代码运行良好,但我不知道 JTextField 如何知道我希望在我按下 Enter 键时执行代码。我猜 JTextField 已经在其代码中定义了它会“回答”的事件(如 Enter press)。我希望有人能帮我澄清这个疑问

【问题讨论】:

标签: java swing actionlistener jtextfield actionevent


【解决方案1】:
  • ENTER key 实现为 KeyBindings(字段接受),用于 JFormattedTextFieldJTextFieldJPasswordField
  • 此通知程序通过调用 ActionListener(通知程序,API 中的方法)生成一个事件,对于上午 JComponents,您可以通过添加 ActionListener 来监听此事件
  • 另一个JComponents 甚至可以从ENTER key 发射到两个或更多AWT/Swing Listeners,例如对于JComboBox 来自ActionListenerItemListener
  • 大部分 Swing JComponents 已经实现了通用/标准加速器,类似于 MS Windows(MsOffice 等),这些关键事件在 Swing 中实现为 KeyBindings
  • 您可以添加、更改、阻止那些在 API 中实现的事件。或使用KeyBindings 添加、定义自己的快捷键
  • 关于使用 KeyBindings 而不是 KeyListener 的良好做法(这里有一堆问答)

【讨论】:

【解决方案2】:

在 Java 中,GUI 侦听(称为侦听器)来自用户的操作。有很多侦听器可用于特定的 GUI。例如,对于 Textfield 侦听动作事件。 ActionEvent 触发一个监听该事件的 GUI,所以每当你点击一个聚焦的 GUI 时,它都会响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多