¿Cómo puedo dar una variable a un oyente de action?
-
21-09-2019 - |
Pregunta
Tengo un partner
variable estática en la clase. Y quiero establecer un valor de estas variables siempre que se pulsa un botón de radio. Este es el código Traté de usar:
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);
}
El problema aquí es que el actionPerformed
no ve la variable playerName
creada en el bucle. ¿Cómo puedo pasar esta variable al actionListener?
Solución
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);
}
Las variables locales se pasan a las clases internas deben ser definitiva. Originalmente pensé que no se puede hacer playerName
definitiva en el bucle, pero en realidad se puede. Por si no fuera el caso, sólo tendría que almacenar playerName
en última variable adicional (final String pn = playerName
) y pn
usado de actionPerformed
.
Otros consejos
Variable debe ser final para pasar en clase interna.
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);
}
}