我有一个弹出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时,我必须按两次。
提前致谢。