どのように私はアクションリスナーに変数を与えることができますか?

StackOverflow https://stackoverflow.com/questions/2488006

質問

私はクラスの静的変数のpartnerを持っています。そして、私はラジオボタンが押されたときは、これらの変数の値を設定します。これは私が使用しようとしたコードです。

for (String playerName: players) {
    option = new JRadioButton(playerName, false);
    option.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent evt) {
            partner = playerName;
        }
    });
    partnerSelectionPanel.add(option);
    group.add(option);
}

ここでの問題は、actionPerformedがループで作成した変数のplayerNameを見ていないということです。どのように私はのactionListenerに、この変数を渡すことができますか?

役に立ちましたか?

解決

for (final String playerName: players) {
    option = new JRadioButton(playerName, false);
    option.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent evt) {
            partner = playerName;
        }
    });
    partnerSelectionPanel.add(option);
    group.add(option);
}

内部クラスに渡されたローカル変数は、最終的にする必要があります。もともと私はあなたのforループでplayerName決勝を行うことができないと思ったが、実際には次のことができます。それはそうではなかった場合は、単に追加の最終変数(playerName)とfinal String pn = playerNameからの使用pnactionPerformedを格納します。

他のヒント

変数でなければなりませんの内部クラスにそれを通過する最終的な

JButton button = new JButton("test");

button.addActionListiner(new ActionForButton("test1","test2"));

class ActionForButton implements ActionListener {

    String arg,arg2;
    ActionFroButton(String a,String b) {
        arg = a; arg2 = b;
    }

        @Override
        public void actionPerformed(ActionEvent e) {
            Sustem.out.println(arg + "--" + arg2);
        }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top