我想在Java中为我的应用程序设置一个图标。我正在使用Eclipse。
我不知道将图标(以及顺便提供的配置文件)存储到项目中的方式是最好的(我接受建议学习最佳方法)。
无论如何,我正在尝试将此行用于我的扩展JFrame类:
setIconImage(Toolkit.getDefaultToolkit().getImage("img/icon.png"));
但不起作用:仍然使用咖啡杯图标。
如何将图标访问到包estacionBase.img?有没有更好的地方存放?我怎么才能访问呢?
答案 0 :(得分:3)
不要将资源与源文件一起保存,而是将其保存在src
之外的res
之类的文件夹中。将您的资源与资源分开是一个好主意。
对于图标,请使用setIconImage(ImageIO.read("res/icon.png"));
<强>然而强>
如果您的图标位于jar
内,则必须使用ImageIO.read(Classname.class.getResource("res/icon.png"));
我认为这是正确的,但要注意你的相对路径,如果它不起作用,首先要检查的是你的路径相对于它的执行地点(无论是来自.class dirs还是来自某个阶段的jar。)
答案 1 :(得分:1)
针对保存问题:在项目中创建一个新的源文件夹,并将其命名为 res 左右。然后你可以把你的资源放在那里。由于 res 被标记为源文件夹,它也将在你的jar中。
对于加载,您可以使用
setIconImage(ImageIO.read("res/icon.png"));
或
setIconImage(
new ImageIcon(getClass().getResource("res/icon.png"), description).getImage()
);
当然,在源代码之间插入图像也是可以的。大多数官方Java演示(例如here)都是这样做的。它更紧凑。我不会将这种技术用于大型项目。它会变得非常混乱。
答案 2 :(得分:0)
尝试将图像放入第二个文件夹,例如/ res,如其他人建议的那样,然后使用代码:
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("path/to/icon.png")));
我为我的应用程序尝试了这个,每次都有效。另外,尽量不要将图像放入包中。