У меня есть JDialog
, который берет имя от пользователя. За JDialog
- это апплет. Я не хочу, чтобы пользователь получал доступ к этому апплету, пока он не введет имя. Я попробовал JDialog.setAlwaysOnTop(true)
, но апплет выдает ошибку AccessException
. Так что я сделал, это сохранить цикл while, который будет выполнять JDialog.setVisible(true)
до JtextField
(вход для имени пользователя) пуст (""). Но по какой-то причине это работает очень медленно, что означает нагрузку JDialog
, но требуется время, чтобы сфокусироваться на JTextField
, и даже когда пользователь вводит свое имя, он приходит очень медленно ... как один символ за 2 секунды ... Есть ли любым другим способом для меня заставить пользователя ввести имя перед доступом к апплету?как обеспечить, чтобы JDialog всегда оставался сверху
ответ
Использование модальных JDialog. Например, код в вашей инициализации (...) метод JApplet может включать в себя:
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this));
dialog.setModal(true);
dialog.setSize(...);
dialog.setVisible(true);
Или вы можете просто использовать JOptionPane.showInputDialog(). Опять же, вы просто укажете «this» в качестве родительского компонента панели параметров.
Он работает медленно, потому что программа обрабатывает эту Foo цикл
Что вы можете сделать, это добавить окно слушателя, а затем JDialog потерял это фокус (или апплет получает его) вернуть фокус на JDialog.
Это должно работать гораздо лучше, чем цикл вы используете прямо сейчас
Если ModalityTypes работают для апплетов, я бы предложил это вместо этого. Однако у меня нет времени, чтобы узнать. –
Я добавил FocusListener в JDialog и написал тело для функции focusLost(). Однако, похоже, он не работает. Если пользователь нажимает кнопку JDialog, он не отображается снова. Я думаю, что щелчок за пределами JDialog не приводит к тому, что JDialog теряет фокус, он просто скрывается. – mithun1538
mmhhh, можете ли вы разместить образец кода? – OscarRyz
Другой вариант:
frame.setAlwaysOnTop(true);
Это заставляет диалог поверх любого другого.
только то, что я искал. Благодарю. – mithun1538
Но theres одна проблема. ActionListeners больше не отвечают. А также пользователь может закрыть диалоговое окно (в правом верхнем углу диалогового окна есть x). Есть ли что-нибудь, что мне нужно для восстановления после того, как пользователь ввел имя? – mithun1538
Если вы не хотите, чтобы пользователь мог закрыть диалоговое окно, используйте: dialog.setDefaultCloseOperation (...); – camickr