3

ボタンで埋める配列があり、クリックしたときに個々のボタンのテキストを変更したい。

for (int i = 0; i<4; i++)
        {
            button[i] = new JButton ("Add");
            button[i].addActionListener(this);

            box[i] = new JComboBox();
            foodOptions.add(box[i]);
            foodOptions.add(button[i]);

        }

public void actionPerformed (ActionEvent e)
    {

        button[this].setText("I've been clicked!");

    }

互換性のないタイプのために電流が機能しません。どの形式が適切ですか?

4

1 に答える 1

5

はい、thisGUIオブジェクトではなくintを期待する配列インデックスにオブジェクトを渡すことは意味がないので、これで何を達成しようとしていたのかわかりません。

ActionEventのgetSource()メソッドからクリックされたJButtonへの参照を取得するだけです。

JButton btn = (JButton)e.getSource();
btn.setText("I've been clicked");

編集:
また、ActionListenerとして使用することは避けてthisください。これは、GUIクラスにActionListenerを実装させて、貧弱なクラスに多くのことを実行するように要求している可能性があることを意味します。匿名の内部クラスを使用するか、AbstractActionsを使用する方がはるかに優れています。

于 2013-01-14T22:15:32.533 に答える