我正在构建一个简单的计算器。为了生成所有这些按钮,我已经创建了一个ArrayList,并在循环中初始化了数字,而对于其他的则进行了手动初始化:
//Button Initialization
for(int i=0; i<10; i++) {
numberButtons.add(new JButton(""+i)); //indexes 0-9 of the ArrayList
}
numberButtons.add(new JButton(",")); //index 10 and so on
numberButtons.add(new JButton("C"));
numberButtons.add(new JButton("+"));
numberButtons.add(new JButton("-"));
numberButtons.add(new JButton("\u221A"));
numberButtons.add(new JButton("*"));
numberButtons.add(new JButton("/"));
numberButtons.add(new JButton("="));
我已经为他们添加了 ActionListener:
//Adding ActionListener
EventHandling handler = new EventHandling(numberButtons);
for (JButton buttons : numberButtons) {
buttons.addActionListener(handler);
}
在另一个名为 EventHandling 的类中,我想根据按下的数字来启动操作。我创建了以下内容:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
public class EventHandling implements ActionListener {
private ArrayList<JButton> numberButtons;
public EventHandling(ArrayList<JButton> numberButtons) {
this.numberButtons = numberButtons;
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == numberButtons.get(1)) {
System.out.println("Button 1 works!");
}
if (event.getSource() == numberButtons.get(2)) {
System.out.println("Button 2 works!");
}
}
}
它能正常工作,但是我想知道是否有更好的方法来处理每个按钮事件,而不是使用if语句。我尝试过使用switch语句,但它不能与对象一起使用,而这些按钮的getText()似乎也不是解决办法。
谢谢您的答复!