当前位置: 首页 > 知识库问答 >
问题:

JoptionPane.ShowConfirmDialog中的Java-Custom图像不起作用

丁善
2023-03-14

用户输入密码并单击Ok按钮时,密码将被加密并存储在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个答案

茅秦斩
2023-03-14

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

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

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

这张图片是我从免费图标PNG得到的

import java.util.Base64;
....
byte[] bytesEncoded = Base64.getEncoder().encode(password.getBytes());
 类似资料:
  • 当我裁剪图像时,应用程序在Android7.0中崩溃了。 异常:02-06 12:40:53.717 567 1-5685/com.tribyte.itutor2 E/databaseutils:将异常写入包java.lang.securityException:拒绝权限:写入android.support.v4.content.fileProvider uri内容: 示例代码:

  • 问题内容: 我有一种情况,在使用网络应用程序时,我需要显示动态图像。我想显示图像文件名存储在变量中的位置。该变量是一个属性,它返回一个存储变量,该变量在上异步填充。 但是,当我刚这样做时,它会完美地工作: 正确的方法应该是什么? 问题答案: 我通过以下代码来工作 并在HTML中: 但是不确定为什么我以前的方法行不通。

  • 问题内容: 我正在使用html2canvas 0.4.0渲染屏幕截图,并希望将其另存为Web服务器上的图像。 为此,我编写了以下函数: JavaScript saveJPG.php 渲染完画布后,我可以将其完美地附加到HTML主体中,但是将其保存在服务器上会导致文件损坏(?)。 我可以在IrvanView中读取尺寸,但是图像是透明的/空的?该文件约为2.076 KB。所以它不是真的是空的。 我也尝

  • 布局是:在视图显示图像的顶部和图像的顶部,在右上角的显示位置-持久按钮中(同时向下滚动图像下面的文本-位置是固定的)。它不起作用:按钮隐藏在图像下面,只有当我向下滚动到文本的白色背景时,我才能看到按钮。这是代码。该按钮是自定义的形状:椭圆形彩色与图像作为背景。我还尝试将android:background=“@drawable/btn1_shape”更改为android:src=“@drawabl

  • 不要在div中使用类nav-item工作background-image。所有映像都在同一个目录中。页眉工作中的背景。有了img src一切都很好。问题出在哪里? 我什么都试过了。 null null

  • 问题内容: 这是用于通过布雷森纳姆算法在计算出的位置上绘制点的代码: 列表“布雷森汉姆”包含所有借助布雷森汉姆线描算法预先计算的点。我想在“ for”循环中设置1秒的延迟,以便在间隔1秒后绘制每个点。“延迟”部分中列出的部分无效。如何使“延迟”工作?更具体地说,我想看到所有的点以1秒的间隔在屏幕上一个接一个地绘制。 问题答案: 我假设您正在某个方法中调用此方法。 只是一个提示: 从来没有睡过油漆过