Netbeans ImageIcon 不显示

问题描述 投票:0回答:4

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

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

  1. 将 JLabel 拖放到 Form Builder 中。 Drag and drop a JLabel into the Form Builder.

  2. 打开 JLabel 的属性菜单。在

    text
    字段中输入空字符串 ("")。单击
    icon
    旁边的省略号。 Open up the JLabel's properties menu. Click the ellipsis next to icon.

  3. 选择外部图像并单击省略号。 Select External Image and click the ellipsis.

  4. 选择选择的图像。在我的例子中,它是一个 .png。 Select the image of choice.

  5. 注意图像出现在图标预览中。 Notice that the image appears in the icon preview.

  6. 关闭图标菜单和属性菜单,注意图像在 Form Builder 上显示为 JLabel 的图标。 Close the icon menu and the properties menu, and notice that the image appears on the Form Builder.

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

java image netbeans imageicon gui-builder
4个回答
1
投票

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

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

希望这有帮助,即使这是一个远射。


1
投票

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


1
投票

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

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

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


-1
投票

Lorenzo Prempratya Premvijit:我想知道如何找到 Netbeans 创建的目标文件夹和 .class 文件,然后如何将图像复制到该目标文件夹

© www.soinside.com 2019 - 2024. All rights reserved.