как удостовериться, что JDialog всегда остается на вершине

У меня есть a JDialog это берет имя от пользователя. Позади JDialog, апплет. Я не хочу, чтобы пользователь получил доступ к тому апплету, пока он не ввел имя. Я попробовал JDialog.setAlwaysOnTop(true), но апплет бросает AccessException ошибка. Таким образом, то, что я сделал, было содержанием некоторое время цикл, который выполнится JDialog.setVisible(true) до JtextField(вход для имени пользователя), пусто (""). Но по некоторым причинам это работает действительно медленное, означая JDialog загрузки, но это занимает время, чтобы сфокусироваться на JTextField и даже когда пользователь вводит свое имя, оно прибывает действительно медленное... как один символ через 2 секунды... Есть ли какой-либо другой способ для меня вынудить пользователя ввести имя прежде, чем получить доступ к апплету?

7
задан Madhawa Priyashantha 12 December 2014 в 17:24
поделиться

2 ответа

Используйте модальный JDialog. Например, код в вашем методе init (...) JApplet может включать:

JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this));
dialog.setModal(true);
dialog.setSize(...);
dialog.setVisible( true );

Или вы можете просто использовать JOptionPane.showInputDialog (). Опять же, вы должны просто указать «this» в качестве родительского компонента панели параметров.

11
ответ дан 6 December 2019 в 21:11
поделиться

Он работает медленно, потому что программа обрабатывает этот цикл foo

Что вы можете сделать, так это добавить слушателя окна, и тогда jdialog потеряет фокус (или апплет получает его), вернуть фокус jdialog.

Это должно работать намного лучше, чем цикл for, который вы используете сейчас

0
ответ дан 6 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: