Я хочу, чтобы JOptionPane не имеет кнопок и не может быть закрыт пользователем для отображения в центре экрана относительно другого компонента. Затем я хочу выполнить другой код, после чего я закрою JOptionPane.Java - Закрытие JOptionPane после завершения задачи
Вот что у меня есть:
JOptionPane uploadPane = new JOptionPane("Uploading data...", JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);
JDialog dialog = new JDialog();
dialog.setTitle("Uploading");
dialog.setModal(true);
dialog.setContentPane(uploadPane);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dialog.pack();
dialog.setVisible(true);
dialog.setLocationRelativeTo(this);
// TODO: Upload data
dialog.dispose();
Этот код создает JOptionPane в верхнем левом углу экрана, который появляется, как я хочу, чтобы появиться (в сторону от его местоположения). Однако он не закрывается.
Когда я избавляюсь от линии:
dialog.setModal(true);
JOptionPane создается в том месте, что оно должно быть, и делает ближе по команде Dispose. Однако по какой-то причине он ничего не говорит об этом. От названия нет сообщения или значка.
Как я могу заставить это работать?
Возможно, вы заблокируете Диспетчерскую тему. Посмотрите на [Concurrency in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/) и [Создание графического интерфейса с JFC/Swing] (http://docs.oracle.com/ javase/tutorial/uiswing /) – MadProgrammer
Как происходит то, что EDT блокируется? – Infamous911
Вы можете блокировать EDT, выполняя длительный процесс или вызывая метод блокировки или Thread.sleep, например – MadProgrammer