如何放置JFrame图标

时间:2012-07-31 08:09:51

标签: java swing resources icons jframe

我想在Java中为我的应用程序设置一个图标。我正在使用Eclipse。

我不知道将图标(以及顺便提供的配置文件)存储到项目中的方式是最好的(我接受建议学习最佳方法)。

无论如何,我正在尝试将此行用于我的扩展JFrame类:

setIconImage(Toolkit.getDefaultToolkit().getImage("img/icon.png"));

但不起作用:仍然使用咖啡杯图标。

如何将图标访问到包estacionBase.img?有没有更好的地方存放?我怎么才能访问呢?

enter image description here

3 个答案:

答案 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")));
我为我的应用程序尝试了这个,每次都有效。另外,尽量不要将图像放入包中。