我有一个带有JDialog
弹出窗口的Swing应用程序,要求输入用户名和密码。我认为将键盘焦点放在用户名字段中会很好,但是到目前为止我尝试过的所有方法都不起作用(即使我尝试过的一种解决方案也适用于程序中的另一个文本字段),所以。 ...我需要一些帮助。这是我的代码:
//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
以选择适当的字段,但是在使用Metal时,必须按两次。提前致谢。
最佳答案
有关提示和策略,请参见Dialog Focus。