Не удается получить фокус клавиатуры на JTextField в JDialog - PullRequest
1 голос
/ 02 июля 2011

У меня есть приложение Swing, у которого всплывающее окно JDialog запрашивает имя пользователя и пароль. Я подумал, что было бы хорошо иметь фокус клавиатуры уже в поле имени пользователя, но все, что я до сих пор пробовал, не работает (хотя одно из пробованных решений работает для другого текстового поля в программе), поэтому. ...Мне нужна помощь. Вот мой код:

//JTextField usernameField = ...
JDialog dialog = pane.createDialog("Password:");
dialog.setVisible(true);


//Take 1
usernameField.requestFocusInWindow();

//Take 2
dialog.addWindowFocusListener(new WindowAdapter() {
        public void windowGainedFocus(WindowEvent e) {
            usernameField.requestFocusInWindow();
        }
});

//Take 3 - This is what I used elsewhere quite successfully
dialog.addComponentListener(new ComponentAdapter() {
    public void componentShown(ComponentEvent e ) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                usernameField.requestFocusInWindow();
            }
        });
    }
});

Для чего это стоит, это с Linux / X11 / Openbox. И когда я использую GTK, я должен нажать Tab один раз, чтобы выбрать соответствующее поле, но когда я использую Металл, я должен нажать его дважды.

Заранее спасибо.

1 Ответ

3 голосов
/ 02 июля 2011

См. Dialog Focus для советов и стратегий.

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