0

(首先,很抱歉,如果有一百万个这样的问题。我已经尽我所能,这让我发疯了!)

我正在尝试为 JButton 设置一个图标,但我不断收到IllegalArgumentException由 ImageIO 引起的问题。

这是我所拥有的:

    //Other UI elements ^
    JButton X = new JButton("Clear");        
    //com.oliveira.ux is the package name
    Image img = ImageIO.read(getClass().getResource("/com.oliveira.ux/resource/gtk-clear.png"));
    Icon clear = new ImageIcon(img);
    //More UI elements

该图标位于 src/ PACKAGE NAME /resource/ 下。(我使用日食)。我试图更改上面代码的位置(我在这里写的那个是我尝试的最后一个),但是当我运行 de .jar 时,我得到的只是一个 IllegalArgumentException。有什么建议么?

提前谢谢了

这是完整的错误消息:

Caused by: java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at com.oliveira.ux.Main.<init>(Main.java:146)
    at com.oliveira.ux.Main.main(Main.java:75)
    ... 5 more

这指向我上面写的代码中的 ImageIO 部分。

4

1 回答 1

3

路径似乎是错误的......

Image img = ImageIO.read(getClass().getResource("/com.oliveira.ux/resource/gtk-clear.png"));

getResource不期望包名称,而是从类路径的上下文到资源的“路径”(因此路径被附加到类路径元素)

就像是...

Image img = ImageIO.read(getClass().getResource("/com/oliveira/ux/resource/gtk-clear.png"));

应该会给出更好的结果

于 2013-08-16T23:58:38.770 回答