如何为需要不同方法参数的按钮使用一个Action Listener?

时间:2017-11-13 10:07:07

标签: java swing jframe jbutton actionlistener

我想通过简单地调用一个Action Listener来减少我拥有的按钮动作监听器的数量:

\t

我有许多不同的按钮,但是对于使用ActionListener的每个按钮,需要一个ActionListener(例如x)中的参数不同。有没有一种方法可以让动作监听器检测出正在使用哪个JButton?

1 个答案:

答案 0 :(得分:1)

有很多方法可以实现目标。这是一个相当简单和直接的。

首先,使您的动作侦听器成为可以使用参数构建的命名类:

private class CalcListener implements ActionListener {
    private int x;
    private CalcListener(int x){
        this.x = x;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        calc.calculate(x);
    }
}

然后,像这样使用它:

button1.addActionListener(new CalcAction(1));
...
button8.addActionListener(new CalcAction(8));
button9.addActionListener(new CalcAction(9));