我正在使用 NetBeans GUIBuilder 制作 JPanel 窗体。我添加了一个 JLabel 并使用 NetBeans 的界面为它提供了一个来自外部图像 (.png) 的图标。路径已验证且图像显示在 GUIBuilder 屏幕上。当我单击“预览设计”按钮时,它甚至会出现。当我运行项目时它不会出现。 GUI 的其余部分将按应有的方式出现。你们中有人知道为什么会发生这种情况和/或如何解决它吗?
你们中的很多人一直在申请 SSCCE。由于代码是由 NetBeans Form Builder 生成的,因此我包含了制作 JLabel 所采取的步骤。重点区域以红色圈出。
将 JLabel 拖放到 Form Builder 中。
打开 JLabel 的属性菜单。在
text
字段中输入空字符串 ("")。单击 icon
旁边的省略号。
选择外部图像并单击省略号。
选择选择的图像。在我的例子中,它是一个 .png。
注意图像出现在图标预览中。
关闭图标菜单和属性菜单,注意图像在 Form Builder 上显示为 JLabel 的图标。
感谢您接受非正统的 SSCCE,并提前感谢您的帮助。
我发现依赖 Netbeans GUI 构建器为您做所有事情的艰难方式是错误的。
只需创建一个如下所示的图标获取类,将图标放入其包中,并使用“自定义代码”而不是“图像选择器”。当然,这些图标在 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);
如果在尝试此操作后图标仍然没有出现,那么您在表单中布置组件的方式可能有问题(标签在那里但您看不到)。
希望这有帮助,即使这是一个远射。
我也遇到了同样的问题,predi的解决方案也不行。然后我创建了一个包而不是一个文件夹,并在那里添加了图像,现在它可以工作了。
我也有同样的问题。但我找到了解决方案。
临时解决方案。 4. 我将所有图像复制到具有相同结构的目标文件夹。然后我可以直接从 Netbeans 运行该项目。 5. 如果你清理项目。再做4号。
Lorenzo Prempratya Premvijit:我想知道如何找到 Netbeans 创建的目标文件夹和 .class 文件,然后如何将图像复制到该目标文件夹