JFrame "блокировка" шоу ()
Я использую CHARVA (ncurses-like Swing), и у меня есть проблема.
Поскольку charva очень похожа на Swing, я думаю, что решение для Swing такое же, как и для charva.
Я разрабатываю приложение, которое называется JFrame
расширенный класс, получить его код возврата и показать другие JFrame
окна в зависимости от кода возврата.
Это как:
public static void main() {
MainFrame mainframe=new MainFrame();
mainframe.show();
switch (mainframe.returncode) {
case "generalsetting": Frame1 frame1=new Frame1;
frame1.show();
break;
case "usersetting": Frame2 frame2=new Frame2;
frame2.show();
break;
и т.д. Но когда я делаю
mainframe.show();
Программа не ждет, пока мэйнфрейм будет закрыт / скрыт, но продолжит работу на "переключателе", код возврата не инициализируется и вылетает моя программа.
Есть способ иметь "блокировку" show()
?
2 ответа
Если вы хотите выполнить блокирующий вызов, вы можете попробовать использовать модальный JDialog
вместо JFrame
: просто используйте true
за modal
параметр в его конструкторе (см. JDialog)
Хотя, я не знаю, Чарва, но JFrame.show()
устарела начиная с Java 1.5 (вы должны использовать setVisible(true)
вместо).
есть ли способ иметь "блокирующее" шоу ()?
Да. Ты можешь сделать MainFrame
простираться JDialog
вместо JFrame
и сделайте это модальным:
class MainFrame extends JDialog {
//code...
}
System.out.println("Before");
MainFrame d = new JDialog();
d.setModal(true);
d.setVisible(true);
System.out.println("After");