【问题标题】:ActionListener JTextField JavaActionListener JTextField Java
【发布时间】:2017-03-11 18:20:00
【问题描述】:

假设我们有两个 JButton 对象,它们分别捕获“Calculate”和“Exit”。为了不创建由 ActionListener 实现的类,我们让整个类由 ActionListener 实现,ActionPerformed 方法如下所示:

public void actionPerformed(ActionEvent e) {

    if (e.getActionCommand().equals("Calculate"))
        // do what "calculate" button does
    else if (e.getActionCommand().equals("Exit"))
        System.exit(0);

}

我的问题是如果我们有两个文本字段 (JTextField)。我们应该如何重写 actionPerformed 方法?用户在该字段中按 Enter 键后返回 JTextField 名称的方法是什么?

【问题讨论】:

  • 为您的ActionListener 实现编写一个单独的类。实例化它时,将JTextField 注入构造函数。然后您的actionPerformed 方法可以访问文本字段并可以在其上调用getText()

标签: java swing actionlistener


【解决方案1】:

为了不创建由 ActionListener 实现的类...

您不应该使用单个侦听器。相反,您应该为要实现的每个函数使用单独的侦听器。

我的问题是如果我们有两个文本字段 (JTextField)。

您可以添加自定义的TextAction,而不是向文本字段添加 ActionListener。 TextAction 支持 getFocusedComponent() 方法,该方法将返回当前具有焦点的文本字段。这就是所有 Swing 动作在文本组件上实现的方式。

对于一个简单的示例,您可以查看:What text input component last had the focus?

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 2013-03-02
    • 2016-10-29
    • 2012-06-06
    • 2013-12-28
    • 2014-10-19
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多