java NetBeans ImageIcon未显示

fnvucqvd  于 2023-05-21  发布在  Java
关注(0)|答案(3)|浏览(180)

我正在使用NetBeans GUIBuilder创建JPanel窗体。我添加了一个JLabel,并使用NetBeans的接口从外部图像(.png)中为它提供一个图标。路径经过验证,图像显示在GUIBuilder屏幕上。当我点击“预览设计”按钮时,它甚至会显示出来。它不会在我运行项目时显示。GUI的其余部分按应有的样子显示。你们知道为什么会发生这种情况吗?或者如何解决?
很多人都要求参加SSCCE。由于代码是由NetBeans表单生成器生成的,因此我将创建JLabel的步骤包括在内。重点区域用红色圈出。
1.将JLabel拖放到窗体生成器中。

1.打开JLabel的属性菜单。在text字段中输入空字符串(“”)。单击icon旁边的省略号。

1.选择“外部图像”并单击省略号。

1.选择所选图像。在我的情况下,它是一个. png。

1.请注意,该图像将显示在图标预览中。

1.关闭图标菜单和属性菜单,请注意图像在窗体生成器上显示为JLabel的图标。

感谢您接受非正统的SSCCE,并提前感谢您的帮助。

hfyxw5xn

hfyxw5xn1#

我发现,依靠Netbeans GUI Builder为您做所有事情是一个错误。
只需创建一个像下面这样的图标获取类,将图标放在它的包中,并使用“自定义代码”而不是“图像选择器”。确定图标在NB内不可见。但如果他们在应用程序运行时出现,谁在乎呢。

package com.example.resource.icons;

import javax.swing.ImageIcon;

public class IconFetch {

    private static IconFetch instance;

    private IconFetch(){
    }

    public static IconFetch getInstance() {
        if (instance == null)
            instance = new IconFetch();
        return instance;
    }

    public ImageIcon getIcon(String iconName) {
        java.net.URL imgUrl = getClass().getResource(iconName);
        if (imgUrl != null) {
            return new ImageIcon(imgUrl);
        } else {
            throw new IllegalArgumentException("This icon file does not exist");
        }
    }

    public static final String MINESWEEPER_ONE = "one.png";
}

使用方法:

IconFetch.getInstance().getIcon(IconFetch.MINESWEEPER_ONE);

如果在尝试此操作后图标仍然不显示,则可能是表单中组件的布局方式有问题(标签在那里,但您看不到它)。
希望这能有所帮助,尽管这是一个漫长的过程。

yzxexxkh

yzxexxkh2#

我也遇到了同样的问题,普罗迪的解决方案也不起作用。然后我创建了一个包,而不是一个文件夹,并添加了图像在那里,它现在的工作。

aiazj4mn

aiazj4mn3#

我也有同样的问题。但我找到了解决办法。
1.我在project中创建了一个包,并将图像放在里面。
1.当我构建项目时,Netbeans将创建“目标”文件夹并构建.class文件。
1.我发现我复制到包中的图像没有传输到“目标”文件夹。

**临时解决办法。我复制所有图像到目标文件夹具有相同的结构。然后我可以直接从Netbeans运行项目。5.以防你清理项目。再做一遍4号。

相关问题