2013-03-19 71 views
0

我有一个Swing的JFrame作为主GUI单元的Java应用程序。我已经通过setIconImage()设置了它的图标。当我在NetBeans中运行此程序时,一切正常,框架图标显示。但是当我编译它并尝试运行jar文件(使用JRE7)时,应用程序与Duke具有标准图标。在NetBeans外部运行应用程序时,如何更改该图标?JFrame的图标不显示

UPD: 好了,下面的代码:

public static void main(String[] args) throws IOException{ 
    URL imgUrl = Polygon.class.getResource("/imgs/icon.png"); 
    Image img = ImageIO.read(imgUrl); 

    JFrame f = new JFrame(); 
    f.setSize(new Dimension(500, 500)); 
    f.setIconImage(img); 
    f.setVisible(true); 
} 

UPD2: 我已经添加了此行的代码的末尾:

JOptionPane.showMessageDialog(null, new ImageIcon(img)); 

一切都很好与图像!它加载!但它不显示为图标。

+2

代码在哪里,最好是'SSCCE'? – Reimeus 2013-03-19 13:05:27

+0

请给出相应的代码部分。你是否引用图标的静态路径?编译后你的jar文件是你的图标吗? – Xavjer 2013-03-19 13:06:28

+0

不需要任何代码,因为代码本身工作正常(该框架在NetBeans中有图标)。我怀疑,JRE有什么问题。 – Angstrem 2013-03-19 13:07:23

回答

2

当您从Netbeans内部运行应用程序时,项目文件夹中的文件可用,但如果您自己运行编译的JAR,它们可能不会。

阅读example(注意评论)以正确载入图像。

+0

这不是重点。我在我的项目中使用了其他图像,并且我加载它们的方式与我加载此图标图像的方式完全相同,并且一切都在netbeans之外运行。除了图标图像。 – Angstrem 2013-03-19 13:13:15

+1

好的,也许你应该添加到你的问题。 – user905686 2013-03-19 13:14:43

0

尝试getClass().getResource("imgs/icon.png")。这个对我有用。请注意绝对路径和相对路径之间的差异。您可能不需要领先的/