0

我正在使用 NetBeans GUIBuilder 制作 JPanel 表单。我添加了一个 JLabel 并使用 NetBeans 的界面为它提供了一个来自外部图像 (.png) 的图标。路径已验证,图像显示在 GUIBuilder 屏幕上。当我单击“预览设计”按钮时,它甚至会显示出来。当我运行项目时它没有出现。GUI 的其余部分按原样显示。你们中有人知道为什么会发生这种情况和/或如何解决吗?

你们中的很多人一直在要求获得 SSCCE。由于代码是由 NetBeans 表单生成器生成的,因此我包含了制作 JLabel 所采取的步骤。重点区域以红色圈出。

  1. 将 JLabel 拖放到 Form Builder 中。 将 JLabel 拖放到 Form Builder 中。

  2. 打开 JLabel 的属性菜单。为该text字段输入空字符串 ("")。单击 旁边的省略号icon打开 JLabel 的属性菜单。 单击图标旁边的省略号。

  3. 选择外部图像并单击省略号。 选择外部图像并单击省略号。

  4. 选择选择的图像。就我而言,它是一个.png。 选择选择的图像。

  5. 请注意,图像出现在图标预览中。 请注意,图像出现在图标预览中。

  6. 关闭图标菜单和属性菜单,注意图像在 Form Builder 上显示为 JLabel 的图标。 关闭图标菜单和属性菜单,注意图像出现在表单生成器上。

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

4

3 回答 3

1

我发现依靠 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);

如果在尝试此操作后图标仍未显示,那么您在表单中布置组件的方式可能有问题(标签在那里但您看不到它)。

希望这会有所帮助,即使它是一个长镜头。

于 2012-06-06T10:20:34.587 回答
1

我也有同样的问题。但我找到了解决方案。

  1. 我在项目中创建包并将图像放在那里。
  2. 当我构建项目时,Netbeans 将创建“目标”文件夹并构建 .class 文件。
  3. 我发现我复制到包中的图像没有传输到“目标”文件夹。

临时解决方案。 4.我将所有图像复制到具有相同结构的目标文件夹。然后我可以直接从 Netbeans 运行该项目。5. 如果您清理项目。再做4号。

于 2021-06-07T09:01:41.310 回答
1

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

于 2017-03-10T09:15:27.363 回答