3
JPanel p = new JPanel();
    p.setLayout(new GridLayout(4, 4, 5, 5));
    String[] buttons = {
        "1", "2", "3", "/", "4",
        "5", "6", "*", "7", "8", "9", "-", "0", ".", "=", "+"
    };
    for (int i = 0; i < buttons.length; i++) {
            p.add(new JButton(buttons[i]));
   add(p);

このコードは、優れた計算機レイアウトを生成します。これは、各ボタンにActionListenerを追加すると同時に、このレイアウトを維持しながら、ボタンごとにそれを実行しないという意味です。

JButton button1 = new JButton("1");
     button1.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent event) {
// interesting code for button1 goes here
      }
   });
4

4 に答える 4

4

はい、の配列の代わりに、インスタンスStringの配列があります。ActionそれぞれActionに名前があり、もActionListenerです。ここでは、いくつかの例を引用しています

于 2012-11-04T12:28:07.743 に答える
3

ループ内のActionListener各ボタンに:の形式で追加するだけです。forAbstractAction

for (int i = 0; i < buttons.length; i++) {
   JButton button = new JButton(buttons[i]);
   button.addActionListener(new MyAction());
   p.add(button);
}

どこ

class MyAction extends AbstractAction {
   @Override
   public void actionPerformed(ActionEvent event) {
   ...
   }
}
于 2012-11-04T12:30:54.637 に答える
2

私はこのコードを使用してそれをしました...

   String[] buttons = {
        "1", "2", "3", "/", "4",
        "5", "6", "*", "7", "8", "9", "-", "0", ".", "=", "+"
    };

    Action[] allActions = new Action[buttons.length];

    for ( i = 0; i < buttons.length; i++) {

        allActions[i] = new ButtonAction(buttons[i],i);

        JButton button = new JButton(allActions[i]);

           panel.add(button);


        }

次のようにクラスButtonActionを使用します

  public class ButtonAction extends AbstractAction 
  {
int i;
   public ButtonAction(String text, int i) {
    super(text);
    this.i = i;
    }
   public void actionPerformed(ActionEvent e) {
    /* you can put any action here. either make the action depend on array value or 
      the string text */
   System.out.println(i);

   }
 }
于 2012-11-04T15:00:39.560 に答える
2

私の経験から、ボタンのリストを作成し、ループで実行して追加することができますActionListener

List<JButton> buttonsList = new ArrayList<JButton>(buttons.length):

for (JButton currButton : buttonsList) {

       currButton.addActionListener(){
         ....
       }
   ....
}
于 2012-11-04T12:29:50.250 に答える