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

标签 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();
});

最佳答案

谢谢,@Murat K。

看来我第一次看文章不够仔细。

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

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

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

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

为了进一步了解 JDialogs 以及它们的工作原理,我建议阅读@Murat K. 提供的链接或单击 here。 .

关于java - JOptionPane.ShowConfirmDialog 多个输入,焦点文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774610/

相关文章:

java - 显示下一个数据库条目

java - spring-boot:数据库中断后jdbc重新连接

java - 用arraylist创建对象并清除,但不清除对象中的arraylist

android - android 对话框中的 clearFocus 不起作用

c# - 如何知道应用程序正在关闭

java - 在java中读取特定字符之前的文件

java - 为什么 Netty 使用反射将 sun.nio.ch.SelectorImpl 类中的成员替换为基于数组的集合?

android - TimePickerDialog 的长度 - Android

Javascript 对话框自动高度无法正常工作

TopMost = true 的 WinForms 对话框