我想通过简单地调用一个动作侦听器来减少按钮操作侦听器的数量:
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));