1

次のことについて質問があります。ボタンの2D配列があり、クリックしたときに別のメソッドを実行する必要があります。私の現在のメソッドは、次の入力、文字列(ユーザーから簡単に取得できます)、および2つの整数値に依存しています。これらは、配列内のボタンの位置によって決まります。

これらのボタンにボタンリスナーを接続していますが、ボタンの実際の位置をどのように把握できるかわかりません。私は独自のボタンクラスを作成し(特定の設定が必要で、もっと簡単だと思ったため)、作成するときに、配列内の実際のボタンの値を基本的に保持するgetXPosおよびgetYPosというメソッドを実装しました。作成した。リスナーは実際にどのボタンが押されているのかわからないので、これらの値を取得する方法がわかりません。

getSource()メソッドを使用できますが、そのソースのメソッドを呼び出す方法がわかりません。たとえば、私は次のことを試みました。

int x = event.getSource()。getXPos(); しかし、私はこれを行うことができません。内部メソッドなどにアクセスできるように、どのボタンを押したかを確認する方法はありますか?ありがとう!

4

1 に答える 1

2

ソースでメソッドを呼び出すには、最初にそれをキャストする必要があります。ActionListenerx変数とy変数を使用して、スペシャルのインスタンス以外に自分を追加することがない場合は、次のMyButtonようにすることができます。

MyButton button = (MyButton) event.getSource();
int x = button.getXPos();
int y = button.getYPos();

次にMyButton、xとyが含まれます。

public class MyButton extends JButton {

    private int xPos;
    private int yPos;

    // ...

    public int getXPos() {
        return xPos;
    }

    public int getYPos() {
        return yPos;
    }
}

また、リスナーを常に次のインスタンスに追加していることを確認してくださいMyButton

MyButton myButton = new MyButton();
// ...
myButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        MyButton button = (MyButton) e.getSource();
        int xPos = button.getXPos();
        int yPos = button.getYPos();
        // Do something with x and y
    }
});
于 2012-10-13T02:59:07.957 に答える