我用Java制作了一个计算器,但有些代码非常重复。这是我用来添加ActionListener
的内容 one.addActionListener(handlerOne);
two.addActionListener(handlerOne);
three.addActionListener(handlerOne);
four.addActionListener(handlerOne);
five.addActionListener(handlerOne);
six.addActionListener(handlerOne);
seven.addActionListener(handlerOne);
eight.addActionListener(handlerOne);
nine.addActionListener(handlerOne);
zero.addActionListener(handlerOne);
add.addActionListener(handlerOne);
subtract.addActionListener(handlerOne);
multiply.addActionListener(handlerOne);
divide.addActionListener(handlerOne);
sqrt.addActionListener(handlerOne);
exp.addActionListener(handlerOne);
equals.addActionListener(handlerOne);
cls.addActionListener(handlerOne);
modulus.addActionListener(handlerOne);
有没有办法缩短它?
答案 0 :(得分:4)
您可以将所有组件(按钮)放在List中,通过某些代码(如
)附加侦听器for( Component c : componentsList ) {
c.addActionListener(yourListener);
}
答案 1 :(得分:1)
对按钮的全部或部分(仅限数字按钮)使用JButton[]
。然后迭代该数组并将ActionListener
添加到按钮:
JButton[] buttons = new JButton[10]; // For digit buttons.
int i = 0;
for(JButton button: buttons)
buttons[i++].addActionListener(handlerOne);
同样,您可以使用JButton[]
作为操作员按钮。通过使用不同的数组,我认为可以避免可能的混淆。
答案 2 :(得分:0)
创建一个方法,该方法将创建按钮并为其分配侦听器。您仍然会收到大量调用,但至少所有按钮创建和初始化代码都将驻留在同一个方法中,因此您可以更轻松地为每个按钮修改它。
答案 3 :(得分:0)
可能还有另一种选择 - 将所有按钮添加到单个容器中,并将监听器添加到该容器中。