2

ボタン R、0、E を追加するより効率的な方法はありますか? どういうわけかそれらを配列に追加することは可能ですか?

public Keypad() {
        setTitle("Keypad");
        setSize(220, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new GridLayout(4, 3, 2, 2));

    JButton[] buttonArray = new JButton[10];
    for (int i = 1; i < buttonArray.length; i++) {
        buttonArray[i] = new JButton(String.valueOf(i));
        add(buttonArray[i]);
        buttonArray[i].addActionListener(this);
    }

    add(buttonR);
    add(button0);
    add(buttonE);

    setVisible(true);
    setResizable(false);
}
4

2 に答える 2

3

今よりもはるかに効率的になることはできません。コードを少し再編成して、ActionListener の追加とボタンの追加を 1 つのメソッドで階層に移動することもできます。また、JButton[]は役に立たないので削除してください。メモリに数バイトを節約できます (ただし、実際には大したことはありません)。

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Keypad extends JFrame implements ActionListener {

    private JButton buttonR = new JButton("R");
    private JButton button0 = new JButton("0");
    private JButton buttonE = new JButton("E");

    public Keypad() {
        setTitle("Keypad");
        setSize(220, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new GridLayout(4, 3, 2, 2));
        for (int i = 1; i < 10; i++) {
            addButton(new JButton(String.valueOf(i)));
        }

        addButton(buttonR);
        addButton(button0);
        addButton(buttonE);

        setResizable(false);
        setVisible(true);
    }

    private void addButton(JButton button) {
        button.addActionListener(this);
        add(button);
    }

    @Override
    public void actionPerformed(ActionEvent e) {


    }
}
于 2013-02-21T12:28:23.780 に答える
1

「どういうわけかそれらを配列に追加することは可能ですか?」

はい、それが必要な場合はこれを行うことができます

JButton[] buttonArray = new JButton[10];
for (int i = 1; i < buttonArray.length+3; i++) {

   if(i<buttonArray.length){
    buttonArray[i] = new JButton(String.valueOf(i));
    add(buttonArray[i]);
    buttonArray[i].addActionListener(this);
   }
  if(i==buttonArray.length+1){add(buttonR);}
  if(i==buttonArray.length+2){add(button0);}
  if(i==buttonArray.length+3){add(buttonE);}

}

これはあなたが望むことをしますが、知る限り、これを行うより速い方法はありません。

于 2013-02-21T12:05:32.453 に答える