У меня есть приложение 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
один раз, чтобы выбрать соответствующее поле, но когда я использую Металл, я должен нажать его дважды.
Заранее спасибо.