我在类中的静态变量partner。我想,只要按下按钮可设置这些变量的值。这是我试图使用的代码:

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

这里的问题是,actionPerformed没有看到在循环中创建的变量playerName。我怎样才能这个变量传递给的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);
}
传递到内部类

本地变量必须是最后。原本我以为你不能让playerName最终在for循环,但事实上,你可以。如果不是的情况下,只需将存储在附加的最终变量(playerNamefinal String pn = playerName并用于从pn actionPerformed

其他提示

变量必须的最终以将其传递到内部类。

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);
        }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top