Wie kann ich eine Variable auf eine Aktion Hörer geben?
-
21-09-2019 - |
Frage
Ich habe eine statische Variable partner
in der Klasse. Und ich möchte einen Wert dieser Variablen setzen, wenn ein Radio-Taste gedrückt wird. Dies ist der Code, den ich zu verwenden versucht:
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);
}
Das Problem hierbei ist, dass der actionPerformed
nicht den Variable playerName
in der Schleife erstellt wird, sehen. Wie kann ich diese Variable auf die Action passieren?
Lösung
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);
}
Lokale Variablen innere Klassen übergeben muss endgültig sein. Ursprünglich dachte ich, dass Sie nicht playerName
endgültig in der for-Schleife machen, aber in der Tat können Sie. Wenn das nicht der Fall ist, würde man einfach speichern playerName
in zusätzlicher letzte Variable (final String pn = playerName
) und gebrauchten pn
von actionPerformed
.
Andere Tipps
Variable muss letzte es in innere Klasse zu übergeben.
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);
}
}