Приостановка выполнения кода в методе actionPerformed () класса ActionListener - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть этот actionPerformed метод, который берет две карты.В период между розыгрышем этих двух карт я хочу приостановить программу на определенное время, чтобы я мог видеть рисунок карт одну за другой.Я попробовал метод Thread.sleep(), но он просто приостанавливает программу после выполнения метода actionPerformed.

1 Ответ

2 голосов
/ 26 сентября 2019

Поскольку длительная операция (например, приостановка) в потоке событий Swing замораживает пользовательский интерфейс, это не рекомендуемая стратегия.Вместо этого, возможно, стоит рассмотреть возможность использования Timer для запуска второго события, соответствующего розыгрышу второй карты, как в примере ниже.

public static void main(String[] args) {
    SwingUtilities.invokeLater(()-> {
        JFrame frame = new JFrame();
        JButton button = new JButton("Ok");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("First card");
                Timer timer = new Timer(2000, new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("Second card");
                    }
                });
                timer.setRepeats(false);
                timer.start();
            }
        });
        frame.add(button);
        frame.pack();
        frame.setVisible(true);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...