Как закрыть JDialog после определенного периода времени, открытого из Jframe - PullRequest
0 голосов
/ 19 мая 2019

Итак, я пытаюсь создать приложение для корзины покупок, используя формы Java Swing с возможностью подключения JDBC MYSQL. В одной части приложения, когда пользователь нажимает кнопку типа «Просмотреть продукт», машине требуется время для загрузки информация из базы данных и вывод в приложение, поэтому в это время я хочу показать значок загрузки, пока работа не будет завершена. Для этого я создал отдельный JDialog, который будет использоваться для отображения gif загрузки, и открою его из JFrame. на событие ActionPerformed кнопки. Вот моя работа:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        JDialog dialog = new loader(this, true);
        dialog.setLocationRelativeTo(this);
        dialog.setVisible(true);
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                dialog.dispose();
            }
        });
        timer.setRepeats(false);
        timer.start();
    }

Но использование таймера Swing для закрытия JDialog через 1сек, как предлагает другой QA по переполнению стека, работает не так, как ожидалось, поэтому есть ли способ выполнить эту задачу, то есть закрыть окно JDialog после определенный период времени?

1 Ответ

2 голосов
/ 19 мая 2019

Ваш диалог модальный.Таким образом, вызов метода setVisible(true) не возвращается, пока диалог не будет закрыт.Таким образом, таймер создается только после закрытия диалога.

Вам нужно создать его и запустить до того, как сделает диалог видимым.

...