2012-07-31 58 views
1

我想为Java应用程序设置图标。我正在使用Eclipse。如何放置JFrame图标

我不知道如果将图标(和配置文件的方式)存储到项目中的方式是最好的(我接受建议以了解最佳方式)。

无论如何,我试图用这条线到我的扩展JFrame类:

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

但不工作:仍与咖啡杯图标。

如何访问图标到包estacionBase.img?有没有更好的地方来存放它?那么我将如何访问它?

enter image description here

+0

http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html请阅读如何从类路径加载资源。 – 2012-07-31 08:15:51

+2

非常好的问题。我敢打赌,许多人对这些东西感到困惑。 – brimborium 2012-07-31 08:22:38

回答

3

而是保存资源旁边的源文件,在文件夹名为类似res外保存src。将源与资源分开是个好主意。

至于该图标,使用setIconImage(ImageIO.read("res/icon.png"));

但是:

如果你的图标是一个jar里面,你将不得不使用ImageIO.read(Classname.class.getResource("res/icon.png"));

,我认为这是正确的,但照顾与你的相对路径,如果它不工作,首先要检查你的路径相对于它的执行位置(无论是从.class目录还是从某个阶段的jar)。

+0

我应该把我的“res”文件夹放到src文件夹中,还是放在外面?如果我想让图标留在罐子里而不是在外面,我的提议不是我的建议吗? – 2012-07-31 08:18:44

+0

是的,如果你想让你的图标保存在jar文件中,你可以将res文件夹放在你的'src'文件夹中,我认为你现在有这个文件夹。我会编辑我的答案以适应这一点。 – rtheunissen 2012-07-31 08:20:54

+0

虽然我会在外面推荐。通常你会拥有像src,bin,lib,res这样的文件夹,这使得更新更容易。但这完全取决于你。 – rtheunissen 2012-07-31 08:22:11

1

为保存问题:在您的项目中创建一个新的源文件夹,并将其称为res左右。然后你可以把你的资源放在那里。由于res被标记为源文件夹,它也会在你的jar文件夹中。

对于负载,可以使用

setIconImage(ImageIO.read("res/icon.png")); 

setIconImage(
    new ImageIcon(getClass().getResource("res/icon.png"), description).getImage() 
); 

当然,也确定有图像在你的源代码之间。大多数官方Java演示(例如here)都是这样做的。它更紧凑。尽管如此,我不会将这种技术用于大型项目。它会变得很混乱。

+0

'ImageIcon'上需要'.getImage()'。 :-) – 2013-04-25 01:30:38

+1

@MichałRus你完全正确。感谢您的更正。 – brimborium 2013-04-25 08:59:58

0

尝试把你的图像转换成第二个文件夹,如/ RES其他人建议,然后使用代码:

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("path/to/icon.png")));
我想这对我的应用程序和它的工作每次。另外,尽量不要将图像放入包中。