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?

War es hilfreich?

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);
        }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top