JOptionPane和用户名密码输入

10

我有一个带有两个文本框、两个JLabel和一个“ok”JButton的自定义对话框弹出窗口,这是一个登录窗口。该窗口运作良好,我只是想知道如何添加一个“取消”JButton,以便用户可以取消登录。

以下是我的窗口代码:

public Hashtable<String, String> login(JFrame frame) {
    Hashtable<String, String> logininformation = new Hashtable<String, String>();

    JPanel panel = new JPanel(new BorderLayout(5, 5));

    JPanel label = new JPanel(new GridLayout(0, 1, 2, 2));
    label.add(new JLabel("E-Mail", SwingConstants.RIGHT));
    label.add(new JLabel("Password", SwingConstants.RIGHT));
    panel.add(label, BorderLayout.WEST);

    JPanel controls = new JPanel(new GridLayout(0, 1, 2, 2));
    JTextField username = new JTextField();
    controls.add(username);
    JPasswordField password = new JPasswordField();
    controls.add(password);
    panel.add(controls, BorderLayout.CENTER);

    JOptionPane.showMessageDialog(frame, panel, "login", JOptionPane.QUESTION_MESSAGE);

    logininformation.put("user", username.getText());
    logininformation.put("pass", new String(password.getPassword()));
    return logininformation;
}

如果您需要,这是登录窗口的屏幕截图:

登录弹窗

如果您单击右上角的“x”,它也会关闭。但是,如果可能的话,我想要一个“取消”JButton。

  • 感谢您的帮助
3个回答

9

您需要使用一个确定取消类型的确认对话框。

JOptionPane.showConfirmDialog(
            frame, panel, "login", JOptionPane.OK_CANCEL_OPTION);

那是我的答案^^非常感谢! - Gerret

0

当您单击按钮时,可以在JFrame上使用dispose()函数来关闭窗口。就像这样:

jButton1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e){
        frameName.dispose();
    }
});

是的,那是一个好的开始,但我有更多的问题,我无法添加第二个按钮,也不知道在哪里! - Gerret

0

好的,我理解了,但我的问题是我不知道我需要填写什么 messageType、icon、options 和 initialValue... 你能帮我解决这个问题吗? - Gerret
messageType 可以是 ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGEPLAIN_MESSAGE 中的任意一种,其余参数可以传递 null。您可以查阅文档获取更多信息。 - Prasad Kharkar
我不太明白,但即使传入 null 也没有问题,但是 OptionType 和 MessageType 有什么区别呢?在我的代码中,我使用了 QUESTION_MESSAGE 选项。那么 OptionType 是什么意思呢? - Gerret

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接