我在类中有一个静态变量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?
答案 0 :(得分:9)
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
)中,并使用pn
中的actionPerformed
。
答案 1 :(得分:2)
变量必须 final 才能将其传递给内部类。
答案 2 :(得分:1)
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);
}
}