如何将一个操作侦听器用于需要不同方法参数的按钮



我想通过简单地调用一个动作侦听器来减少按钮操作侦听器的数量:

ActionListener calculatorListener = new ActionListener(){
             @Override
            public void actionPerformed(ActionEvent e) {
                int x = 9;
                calc.calculate(x);
            }
        };
JButton button9 = new JButton("9");
        buttonPanel.add(button9);
        button9.addActionListener(calculatorListener);
JButton button8 = new JButton("8");
buttonPanel.add(button8);
 button8.addActionListener(calculatorListener); //etc.....

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

有很多

方法可以实现你的目标。 这是一个相当简单明了的方法。

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

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));

最新更新