Java - JoptionPane.ShowConfirmDialog中的自定义图像不起作用

时间:2017-03-17 10:49:05

标签: java css

当用户输入密码并单击“确定”按钮时,密码将被加密并存储在JTextArea中。这工作正常。但我想在showConfirmDialogshowMessageDialog弹出窗口中添加自定义徽标。我尝试使用以下代码,但自定义图像(徽标)未显示在消息弹出窗口

public static void main(String[] args) {

    Box box = Box.createHorizontalBox();
    JLabel label = new JLabel("Enter your password : ");
    box.add(label);
    JPasswordField passwordField = new JPasswordField(24);
    box.add(passwordField);

    final ImageIcon icon = new ImageIcon("C:\\Users\\Test\\Internet.png");
    int button = JOptionPane.showConfirmDialog(null, box, "Enter your password", JOptionPane.OK_CANCEL_OPTION, JOptionPane.NO_OPTION, icon);
    if (button == JOptionPane.OK_OPTION) {
        String password = new String(passwordField.getPassword());
        String encryptedPassword;
        if (password != null && !password.equals("")) {
            byte[] bytesEncoded = Base64.encodeBase64(password.getBytes());
            JTextArea richTextField = new JTextArea(10, 10);
            encryptedPassword = new String(bytesEncoded);
            richTextField.setText(encryptedPassword);
            richTextField.setOpaque(false);
            richTextField.setEditable(false);
            JOptionPane.showMessageDialog(null, richTextField);
        } else {
            JOptionPane.showMessageDialog(null,
                    "Password cannot be null. Please enter password to encrypt.");

        }
    }
}<br>

我将ImageIcon对象作为参数传递给JoptionPane.showConfirmDialog。但是当我运行它时,我看不到弹出窗口中显示的任何图像。我不确定我在这里做错了什么 注意:我需要在弹出窗口中显示自定义图像。 showConfirmDialogshowMessageDialog
非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

你的代码非常好。我只是在我的环境中运行它并且工作正常。这让我相信你的问题是图像的路径。我甚至用一条不存在图像的路径测试它,窗口显示没有显示任何图像。

我只改变了两件事,显然是图像的路径:

final ImageIcon icon = new ImageIcon("c:\\temp\\poke-ball-png-13_30x30.png");

enter image description here

这张图片来自Free Icons PNG

而且Base64类因为没有提到你在哪里使用它我使用的是java:

import java.util.Base64;
....
byte[] bytesEncoded = Base64.getEncoder().encode(password.getBytes());

所以请确保您的图片"C:\\Users\\Test\\Internet.png" 确实存在于该路径的磁盘上