Я запускаю внешнюю программу из Java и ожидаю ее завершения:
Process p = Runtime.getRuntime().exec("notepad");
p.waitFor();
Это вызывается из приложения с графическим интерфейсом, и я хотел бы запретить пользователю делать что-либо в графическом интерфейсе во время работы внешней программы. Уже существует такой механизм, который является модальностью JFrame . Поэтому я подумал, что мог бы создать диалоговое окно, которое также очень удобно могло бы заявить, что пользователь должен выйти из внешней программы, чтобы продолжить, что бы всплыло и заблокировало доступ к GUI:
Process p = Runtime.getRuntime().exec("notepad");
JOptionPane pane = JOptionPane("close the app", JOptionPane.NO_OPTION, JOptionPane.INFORMATION_MESSAGE, [], "Force Exit", "Force Exit");
JDialog dialog = JDialog(frame, "External app", true);
dialog.setContentPane(pane);
dialog.pack();
dialog.setVisible(true);
p.waitFor();
dialog.setVisible(false);
Этот подход, к сожалению, ждет в
dialog.setVisible(true)
p.waitFor()
установка dialog.setModal(false)
до dialog.setVisible(true)
программа ожидает только завершения внешней программы, а затем закрывает диалоговое окно, но это также позволяет пользователю взаимодействовать с GUI.
Есть идеи?