Вопрос
Я использую JFrame как всплывающее окно из основного фрейма, где пользователь должен ввести некоторую информацию, а затем нажать OK.Но проблема в том, что как только этот подкадр откроется, я хочу, чтобы программа игнорировала любой другой сигнал до тех пор, пока не будет нажата кнопка OK, аналогично тому, как это делается с помощью JOptionPanes.Как и сейчас, вы могли бы нажать на кнопку, чтобы открыть подкадр несколько раз, получив таким образом несколько кадров, но это не является намерением (это даже вызывает множество ошибок).
Я мог бы решить это с помощью логического значения, которое становится истинным после нажатия кнопки OK, но это не кажется классным способом исправить это.Я чувствую, что должен быть какой-то другой способ сделать это, поскольку я вижу желаемый эффект, исходящий от моих JOptionPanes, но не могу добраться до него.
Ваше здоровье.
Решение
Вам нужен JDialog
с modal = true
.Из Javadocs:
modal
- указывает, блокирует ли диалоговое окно пользовательский ввод в другие окна верхнего уровня при отображении.
Другие советы
Просто измените JFrame
к a JDialog
.
Затем в конструкторе используйте эту строку:
setModal(true);
Затем ваше приложение будет блокироваться до тех пор, пока диалоговое окно не будет закрыто.
Возможно, вы захотите заглянуть в JOptionPane.showInputDialog()
если ваши пользователи просто вводят String
.