Как добавить JButtons в цикл? - PullRequest
1 голос
/ 21 июня 2019

Итак, я делаю пользовательский интерфейс в плагине для Minecraft, и он добавляет кнопку для каждого игрока, а когда мы нажимаем кнопку, он пинает игрока. Это цикл for:

for (final Player p : Bukkit.getOnlinePlayers())
    {
        System.out.println("Looping.");
        final JButton b = new JButton();
        b.setName(p.getName());
        b.setText(p.getName());
        b.setToolTipText("Kick " + b.getText());
        b.setBackground(Color.GREEN);
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (!b.getBackground().equals(Color.RED))
                {
                        Bukkit.getScheduler().runTask(main, new Runnable() {
                            public void run() {
                                Bukkit.getPlayer(b.getText()).kickPlayer(jtf.getText());
                            b.setBackground(Color.RED);
                            }
                        });
                }

            }
        });
        System.out.println("Button added.");
        f.add(b);
    }

И скажем, на сервере 2 игрока: asd и dsa . Когда выполняется цикл for, он просто добавляет кнопку для asd , но печатает Кнопка добавлена ​​Looping ) два раза.

( f - это публичная статическая JFrame , а jtf - это публичная статическая JTextField )

Итак ... Почему это не работает?

...