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

时间:2015-04-21 14:07:30

标签: java dialog

我有以下代码来创建一个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);

默认情况下,此对话框显示时,会选中Okay按钮。我已经尝试了几乎所有可能的方法来获取userName textField,但到目前为止我还没有管理。我该怎么做?

有关补充信息,我尝试了以下内容:

userName.requestFocus(true);
userName.grabFocus();
userName.requestFocusInWindow();
userName.requestFocus();

我甚至用线程进行测试以防它锁定。

EventQueue.invokeLater(() -> {
    userName.grabFocus();
    userName.requestFocus();
});

1 个答案:

答案 0 :(得分:3)

谢谢,@ Murat K。

似乎我第一次没有仔细阅读这篇文章。

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

JTextField userName = new JTextField();
userName.addAncestorListener( new RequestFocusListener() );

然后我从以下链接添加了RequestFocusListener类:

http://www.camick.com/java/source/RequestFocusListener.java

为了进一步了解JDialog及其重点如何运作,我建议您阅读@Murat K.提供的链接或点击here