Показать JDialog ("Пожалуйста, подождите") на JFrame - PullRequest
4 голосов
/ 08 января 2012

У меня есть JFrame, а у этого JFrame есть JButton.

Я хочу в JButton сначала показать JDialog (дисплей "Please wait") и выполнить другой код, затем закрыть JDialog.

Но при показе JDialog перестал выполнять другой код на JButton.

Ответы [ 4 ]

5 голосов
/ 08 января 2012

Запустите другую обработку на Thread (например, на SwingWorker) и в начале ее вызовите modalDialog.setVisible(true).В конце задачи вызовите setVisible(false).

5 голосов
/ 08 января 2012

Я бы предложил создать простой JDialog и затем утилизировать его после запуска вашего кода.Вы можете создать свой JDialog с помощью следующего кода:

JDialog dialog = new JDialog();
JLabel label = new JLabel("Please wait...");
dialog.setLocationRelativeTo(null);
dialog.setTitle("Please Wait...");
dialog.add(label);
dialog.pack();

и реализовать его следующим образом:

dialog.setVisible(true); // show the dialog on the screen

        // Do something here

dialog.setVisible(false); // set visibility to false when the code has run
2 голосов
/ 08 января 2012

Возможно, jdialog находится в модальном режиме, попробуйте изменить модальное свойство jdialog: yordialog.setModal(false).

1 голос
/ 08 января 2012

Он остановился, потому что вы используете «MAIN-Thread», который используется для выполнения кода и отображения JDialog.

Чтобы решить эту проблему, вам нужно посмотреть что-то вроде SwingWorker

...