【问题标题】:Adding ImageIcon to JPanel not working将 ImageIcon 添加到 JPanel 不起作用
【发布时间】:2015-02-27 22:30:44
【问题描述】:

我正在尝试将 ImageIcon 添加到我的 JPanel。

ImageIcon image = new ImageIcon("image.png", null);
JLabel label = new JLabel(image, JLabel.CENTER);
panel.add(label);

好的。该图像与该类位于同一文件夹中...

com.package
          |- mainclass.java
          |- image.png
          V

无论出于何种原因,图像图标都不会显示在 JPanel 中。 我尝试/抓住它,但没有用。完全没有错误!

我在 Windows 上。

【问题讨论】:

    标签: java jpanel panel imageicon


    【解决方案1】:

    ImageIcon(String) 假定指定的 String 值是文件系统上的一个文件

    根据您的描述,我猜该图像嵌入在应用程序中,这意味着它不再作为文件访问,而是需要作为URLInputStream 访问

    因为图像和类在同一个包中,你可以使用类似的东西

    ImageIcon img = new ImageIcon(getClass().getResource("image.png"));
    

    假设你从MainClass加载它

    【讨论】:

    • 好了,现在没有nullpointerexception了,但是没有显示图片! :((对不起!!!)
    • 加载图像时出错或添加 JLabel 的方式有问题
    【解决方案2】:

    您必须指定full path,从您的应用程序的root 看到它。

    在你的情况下,你必须使用new ImageIcon("com/package/image.png", null)

    【讨论】:

    • 但是完整的路径会改变,因为电脑会不一样(这是一个程序,以后会在互联网上......)你的意思是我只需要指定包吗?跨度>
    • 是的,您必须指定包,而不是 JAR 的实际位置。例如,如果您的图像位于 JAR 中的“resources”包中,则使用“resources/image.png”。
    【解决方案3】:

    编辑

    我查看了一些类似情况的旧代码,结果发现我先将图像添加到 JLabel,然后再添加到 JPanel。

    尝试将图像添加到 JLabel,然后将该 JLabel 添加到 JPanel,如下所示。

    ImageIcon image = new ImageIcon(this.getClass().getResource("image.png"));
    JLabel picLabel = new JLabel(image);
    panel.add(picLabel);
    

    【讨论】:

    • 图片是否在同一个包中?
    猜你喜欢
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2014-11-04
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多