【问题标题】:Can I call ActionPerformed method from an Event Handler class for JButton?我可以从 JButton 的事件处理程序类中调用 ActionPerformed 方法吗?
【发布时间】:2013-03-26 12:31:55
【问题描述】:

我有一个名为“select”的 JButton 在创建该 JButton 和其他类的类中,我想使用带有 ActionPerformed 方法的 if 条件。

类似的东西(伪代码)

if(_selectListener.actionPerformed(ActionEvent)) { //i.e., if select Button is clicked,
    //do something
}

这可能吗?

我想调用此方法,因为我必须处理玩家应该能够通过单击“选择”按钮或另一个“滚动”按钮来选择某些内容的情况,并且我想使用类似的东西来控制它一堆类似上面的 if 语句。

如果可能,它的语法是什么? ActionEvent 的参数是什么? 谢谢!

【问题讨论】:

标签: java button user-interface event-handling actionlistener


【解决方案1】:

最简单、最简洁的方法是为每个按钮添加一个专用的、特定的动作监听器。这样,当调用 actionPerformed() 方法时,就可以确定关联的按钮已经被点击了,而无需测试哪个按钮被点击了:

selectButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // handle click on select button
    }
});

scrollButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // handle click on scroll button
    }
});

另外一种方式是使用普通的ActionListener,通过ActionEvent的getSource()方法知道是哪个组件触发了事件。将结果与每个潜在按钮进行比较,以确定哪个是被点击的按钮:

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == selectButton) {
            // handle click on select button
        }
        else if (e.getSource() == scrollButton) {
            // handle click on scroll button
        }
    }

ActionEvent 的参数是什么?

答案在the documentation。阅读它。

【讨论】:

    【解决方案2】:

    不,你不能调用,if 需要 boolean 表达式/值,但是这个方法返回 void。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多