【问题标题】:How can I change the default focus on 'JOptionPane.showConfirmDialog' pop-up from 'Ok' button to the 'textfield'? [duplicate]如何将“JOptionPane.showConfirmDialog”弹出窗口的默认焦点从“确定”按钮更改为“文本字段”? [复制]
【发布时间】:2019-02-05 15:15:41
【问题描述】:

如何将JOptionPane.showConfirmDialog 弹出窗口的默认焦点从Ok 按钮更改为textfield

我的代码:

public String userPassword() {

    Box box = Box.createHorizontalBox();

    JLabel j1 = new JLabel("Password: ");
    box.add(j1);

    JPasswordField jpf = new JPasswordField(24);
    box.add(jpf);

    JOptionPane.showConfirmDialog(null, box, "Enter your password", JOptionPane.OK_CANCEL_OPTION);
    char[] input = jpf.getPassword();

    String password = String.valueOf(input);
    return password;

}

【问题讨论】:

标签: java swing user-interface


【解决方案1】:

您可以使用JOptionPane 代替JOptionPane.showConfirmDialog 来创建所需的对话框,如下所示:

JOptionPane optionPane = new JOptionPane(box, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION)
{
    @Override
    public void selectInitialValue()
    {
        jpf.requestFocusInWindow();
    }
};

optionPane.createDialog(null, "Title").setVisible(true); // pass your parent if possible and and define your title

【讨论】:

  • 感谢您的快速回复。我已经使用了您的代码,它完全符合我的目的。非常感谢您帮助我。
【解决方案2】:

JOptionPane.showConfirmDialog(...) 本身 调用 JOptionPane.showOptionDialog(...) 那么您可以像下面这样简单地使用 JOptionPane.showOptionDialog(...)

JOptionPane.showOptionDialog(null,
                box,
                "My Message Dialog",
                JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.INFORMATION_MESSAGE,
                null, new Object[]{"Ok", "Cancel"}, box);

【讨论】:

  • 感谢您帮助我。我使用了您的代码,焦点问题已解决。我测试了应用程序,发现“输入”键不能代表“确定”按钮单击。所以我使用的是 kAliert 的代码。谢谢!
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 2016-11-09
相关资源
最近更新 更多