I have a static variable partner
in the class. And I want to set a value of these variable whenever a radio button is pressed. This is the code I tried to use:
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);
}
The problem here is that the actionPerformed
does not see the variable playerName
created in the loop. How can I pass this variable to the 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);
}
Local variables passed to inner classes must be final. Originally I thought that you cannot make playerName
final in the for loop, but in fact you can. If that wasn't the case, you would simply store playerName
in additional final variable (final String pn = playerName
) and used pn
from actionPerformed
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With