(首先,我很抱歉,如果有这样的一百万个问题。我已尽力而为,这让我疯了!)
我正在尝试为JButton添加一个图标,但我不断得到由ImageIO引起的IllegalArgumentException
。
这就是我所拥有的:
//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 /下。 (我使用eclipse)。 我试图改变上面代码的位置(我在这里写的那个是我试过的最后一个)但是当我运行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部分。
答案 0 :(得分: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"));
应该给出更好的结果