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");
Другие вопросы по тегам