我可以从JButton的Event Handler类调用ActionPerformed方法吗?

时间:2013-04-04 12:27:19

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

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

像(伪代码)

之类的东西
if(_selectListener.actionPerformed(ActionEvent)) { //i.e., if select Button is clicked,
    //do something
}

这可能吗?

我想调用这种方法是因为我必须处理一种情况,即玩家应该可以通过点击“选择”按钮或其他“滚动”按钮来选择某些内容,并且我想使用类似于一堆if语句如上所述。

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

2 个答案:

答案 0 :(得分:0)

你不能打电话,if需要boolean表达式/值,但这个方法返回void。

答案 1 :(得分:0)

最简单,最干净的方法是为每个按钮添加专用的特定动作侦听器。这样,当调用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。阅读它。