我有以下代码:
JTextField uname = new JTextField(defaultUser);
JPasswordField passwd = new JPasswordField();
JTextField serverAddress = new JTextField(defaultServer);
JTextField port = new JTextField(Integer.toString(defaultPort));
final JComponent[] inputs = new JComponent[]{new JLabel("Username"), uname, new JLabel("Password"), passwd, new JLabel("Server Address"), serverAddress, new JLabel("Server Port"), port};
int var = JOptionPane.showConfirmDialog(parent, inputs, "Enter Connection Details", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (var != 0) {
return;
}
....
这将创建一个对话框,提示输入一些详细信息以连接到服务器。我想要的是使密码字段成为默认选择。也就是说,光标默认在那里,因此您可以在窗格出现后立即开始输入,而不必先选择密码框 - 默认情况下,确定按钮具有焦点。
我已经尝试使用 passwd.requestFocusInWindow() 但它不起作用(因为我认为在调用它之前该框必须是可见的)。我还尝试用各种内容覆盖 passwd 的 requestFocus 方法,但它也没有飞起来(可能是因为它没有被调用......)
注意:我知道其他一些 JOptionPane 方法具有默认值参数,但是它们在布局输入框时存在问题,所以它们对我没有好处。
有人有什么想法吗?这不是交易破坏者,所以如果不能轻松完成,我不会太沮丧。
干杯