Если местоположение вашего компонента является динамическим, вы можете без ограничений запустить цикл while, но добавьте слушателя фокуса на компонент, чтобы остановить цикл, когда он прибыл к нему.
ого, чтобы в диалоге ввода были пользовательские заголовки кнопок, я создал следующий код:
String key = null;
JTextField txtKey = new JTextField();
int answerKey = JOptionPane.showOptionDialog(this, new Object[] {pleaseEnterTheKey, txtKey}, decryptionKey, JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[] {okCaption, cancelCaption}, okCaption);
if (answerKey == JOptionPane.OK_OPTION && txtKey.getText() != null) {
key = txtKey.getText();
}
Как я могупереместить фокус (курсор) в текстовое поле, как отображается диалоговое окно?
ОБНОВИТЬ
Это не работает для меня, я имею в виду, текстовое поле не имеет фокуса: OS: Fedora - Gnome
public class Test {
public static void main(String[] args) {
String key = null;
JTextField txtKey = new JTextField();
txtKey.addAncestorListener(new RequestFocusListener());
int answerKey = JOptionPane.showOptionDialog(null, new Object[]{"Please enter the key:", txtKey}, "Title", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{"OKKK", "CANCELLLL"}, "OKKK");
if (answerKey == JOptionPane.OK_OPTION && txtKey.getText() != null) {
key = txtKey.getText();
}
}
}