JFrame в Java - PullRequest
       14

JFrame в Java

5 голосов
/ 22 мая 2009

Я использую JFrame как всплывающее окно из основного фрейма, где пользователь должен ввести некоторую информацию и затем нажать OK. Но проблема в том, что как только этот подкадр открылся, я хочу, чтобы программа игнорировала любой другой сигнал, пока не будет нажата кнопка OK, аналогично тому, как это делается с JOptionPanes. Как и сейчас, вы можете нажать кнопку, чтобы открыть подкадр несколько раз, получив несколько кадров, и это не является намерением (это даже вызывает много ошибок).

Я мог бы решить эту проблему с помощью логического значения, которое истинно после нажатия кнопки ОК, но это не похоже на крутой способ исправить это. Я чувствую, что должен быть какой-то другой способ сделать это, видя, как я вижу искомый эффект, исходящий от моих JOptionPanes, но не могу добраться до него.

Приветствие.

Ответы [ 2 ]

10 голосов
/ 22 мая 2009

Вам нужно JDialog с modal = true. Из Javadocs:

modal - указывает, блокирует ли диалоговое окно пользовательский ввод в другие окна верхнего уровня при отображении.

6 голосов
/ 22 мая 2009

Просто измените JFrame на JDialog.

Тогда в конструкторе используйте эту строку:

setModal(true);

Ваше приложение будет блокироваться, пока диалоговое окно не будет закрыто.

Возможно, вы захотите посмотреть JOptionPane.showInputDialog(), если ваши пользователи просто вводят String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...