1

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);

これを短くする方法はありますか?

4

4 に答える 4

4

すべてのコンポーネント (ボタン) を List に配置し、次のようなコードでリスナーをアタッチすることができます

for( Component c : componentsList ) {
  c.addActionListener(yourListener);
}
于 2012-10-29T14:36:49.487 に答える
1

JButton[]ボタンのすべてまたは一部 (おそらく数字ボタンのみ) にa を使用します。次に、その配列を繰り返し処理しActionListener、ボタンに追加します。

JButton[] buttons = new JButton[10]; // For digit buttons.

int i = 0;

for(JButton button: buttons)
   buttons[i++].addActionListener(handlerOne);

JButton[]同様に、オペレータ ボタンにa を使用できます。異なる配列を使用することで、混乱を避けることができると思います。

于 2012-10-29T14:37:49.843 に答える
0

ボタンを作成してリスナーを割り当てるメソッドを作成します。それでも大量の呼び出しが発生しますが、少なくともすべてのボタンの作成と初期化のコードは同じメソッドに存在するため、ボタンごとに簡単に変更できます。

于 2012-10-29T14:35:21.860 に答える
0

別の方法があるかもしれません - すべてのボタンを単一のコンテナーに追加し、リスナーをそのコンテナーに追加します。

于 2012-10-29T14:41:32.767 に答える