繁体   English   中英

将ActionListener类添加到Java swing GUI中的多个JButton中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM