Question

J'ai un partner variable statique dans la classe. Et je veux définir une valeur de ces variables chaque fois qu'un bouton radio est pressé. Voici le code que j'ai essayé d'utiliser:

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);
}

Le problème ici est que le actionPerformed ne voit pas la playerName variable créée dans la boucle. Comment puis-je passer cette variable à la actionListener?

Était-ce utile?

La solution

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);
}

Les variables locales passées aux classes internes doivent être définitifs. Au départ, je pensais que vous ne pouvez pas faire de finale playerName dans la boucle, mais en fait vous pouvez. Si cela n'a pas été le cas, vous simplement stocker playerName dans la variable finale supplémentaire (final String pn = playerName) et pn d'occasion à partir actionPerformed.

Autres conseils

variable doit être finale pour passer en classe interne.

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);
        }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top