Java JOptionPane.ShowConfirmDialog多输入,焦点文本字段

Java JOptionPane.ShowConfirmDialog多输入,焦点文本字段,java,dialog,Java,Dialog,我有以下代码来创建java确认对话框: JTextField userName = new JTextField(); JTextField password = new JPasswordField(); Object[] message = { "Username:", userName, "Password:", password }; int option = JOptionPane.showConfirmDialog(null, message, "Login",

我有以下代码来创建java确认对话框:

JTextField userName = new JTextField();

JTextField password = new JPasswordField();
Object[] message = {
    "Username:", userName,
    "Password:", password
};

int option = JOptionPane.showConfirmDialog(null, message, "Login", JOptionPane.OK_CANCEL_OPTION);
默认情况下,此对话框显示时,
确定
按钮被选中。我已经尝试了几乎所有可能的方法来让userName文本字段聚焦,但到目前为止我还没有成功。我该怎么做

为了获得更多信息,我尝试了以下方法:

userName.requestFocus(true);
userName.grabFocus();
userName.requestFocusInWindow();
userName.requestFocus();
我甚至用一个线程进行了测试,以防它被锁定

EventQueue.invokeLater(() -> {
    userName.grabFocus();
    userName.requestFocus();
});
谢谢,@muratk

看来我第一次读这篇文章时不够仔细

为了解决这个问题,我在类中添加了以下代码:

JTextField userName = new JTextField();
userName.addAncestorListener( new RequestFocusListener() );
然后,我从以下链接添加了RequestFocusListener类:

为了进一步了解JDialogs以及它们的焦点是如何工作的,我建议阅读@Murat K.提供的链接或单击