【问题标题】:Netbeans ImageIcon not displayingNetbeans ImageIcon 不显示
【发布时间】:2012-06-08 06:09:52
【问题描述】:

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

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

  1. 将 JLabel 拖放到表单生成器中。

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

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

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

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

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

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

【问题讨论】:

  • 你能在你实例化ImageIcon的地方添加源代码吗?
  • 将 FrameView 中的第 156 行从 setVisible(false) 更改为 setVisible(true),其余的更改我从我的魔法地球仪(低电量)中看不到,为了获得更好的帮助,请尽快发布 @987654321 @
  • NetBeans GUIBuilder 制作了自己的源代码,但无论如何你都可以使用:jLabel1.setIcon(new javax.swing.ImageIcon("C:\\NoSpace\\Minesweeper\\Minesweeper graphics\\one.png"));
  • 1) 不要使用File 来加载嵌入式资源。 (WAG) 2) 为了尽快获得更好的帮助,请发布SSCCE。 (优秀的通用建议)
  • @LastStar007 这是非常糟糕的建议,即使是评论。 1) 使用代表FileString 作为应用程序图标。 2)使用相同的绝对路径。 3) 在路径分隔符中使其特定于平台。

标签: java image netbeans imageicon gui-builder


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我遇到了同样的问题。将文件夹转换为包。重新导入所有图像。在设计器中工作正常,但由于 .getResource() 无法找到图像文件而无法运行。
    【解决方案3】:

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

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

    希望这会有所帮助,尽管这是一个长期的目标。

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多