[英]Adding ActionListener Class to multiple JButtons in Java swing GUI?
我用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);
有什么办法可以缩短时间吗?
您可以将所有组件(按钮)放在“列表”中,并通过一些代码将侦听器附加到
for( Component c : componentsList ) {
c.addActionListener(yourListener);
}
对所有或某些按钮(也许只有数字按钮)使用JButton[]
。 然后遍历该数组并将ActionListener
添加到按钮:
JButton[] buttons = new JButton[10]; // For digit buttons.
int i = 0;
for(JButton button: buttons)
buttons[i++].addActionListener(handlerOne);
同样,您可以将JButton[]
用于操作员按钮。 我认为,通过使用不同的数组,可以避免可能出现的混乱。
创建一个将创建按钮并为其分配侦听器的方法。 您仍然需要进行大量调用,但是至少所有按钮的创建和初始化代码都将驻留在同一方法中,因此,您可以更轻松地为每个按钮修改它。
可能还有另一种选择-将所有按钮添加到单个容器中,然后将侦听器添加到该容器中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.