我怎么可以给一个动作监听一个变量?
-
21-09-2019 - |
题
我在类中的静态变量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);
}
传递到内部类本地变量必须是最后。原本我以为你不能让playerName
最终在for循环,但事实上,你可以。如果不是的情况下,只需将存储在附加的最终变量(playerName
)final String pn = playerName
并用于从pn
actionPerformed
。
其他提示
变量必须的最终以将其传递到内部类。
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);
}
}
不隶属于 StackOverflow