0

Yes2 つのボタンとを含む単純なウィンドウを実装しようとしていますNo

クリックするとボタンYesが無効になり、No押すとボタンNoが無効になりYesます。

私は実装しました:

JButton btnYes = new JButton("Yes");
contentPane.add(btnYes);
btnYes.setActionCommand("Yes");
btnYes.addActionListener(this);

No...ボタンも同じ...

今、私はこのメソッドでイベントをキャッチしています:

public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("Yes"))
    {
        //I know how to get the button that caused the event 
        //but I don't know how to disable the OTHER button.
        JButton source = (JButton)e.getSource();
        //Handle the source button...
    }

}

上記のメソッドでは、イベントを発生させたボタンにはアクセスできますが、他のボタンにはアクセスできません。

ボタンを取得する最良の方法は何ですか?

4

2 に答える 2

1

DialogのクラスのネストされたクラスとしてActionListenerを実装する必要があります。この場合、外部クラスのすべてのフィールドに完全にアクセスできます(ボタンを作成するときにボタンへの参照を保存する必要があります)。

悪い汚い解決策(使用すべきではありません)はまだ存在します:JButtonのgetParent()を介して、次に親子のgetChildren()を介してバテンにナビゲートします。とにかくそれが可能であることを示すためだけに。

于 2012-12-29T22:21:39.363 に答える
1

JButton配列をクラスメンバー変数として使用し、どのインスタンスがイベントを引き起こさなかったかを確認できます。

for (JButton button: buttonArray) {
   if (button != source) {
      button.setEnabled(false); // disable the other button
   }
}
于 2012-12-29T22:27:45.063 に答える