如何在JavaFX应用程序的窗口中设置图标?

时间:2013-05-28 04:14:15

标签: netbeans window icons javafx

我在Netbeans上创建了一个JavaFX应用程序,我把这个代码用于将图标设置到窗口

  

primaryStage.getIcons().add(new Image("file:sicadcam.png"));

当我从Netbeans运行项目时,它运行正常:图标出现在窗口的左上角和任务栏中。该图像位于项目的根目录中。

当我清理和构建项目时,它会生成两个安装程序:一个exe和一个msi;当我安装应用程序并打开它时,窗口没有图标sicadcam.png,它有默认的java徽标图标。

我如何或在何处设置图像的路径,以便在安装应用程序时显示图标。

2 个答案:

答案 0 :(得分:3)

这只是问题的部分答案,因为我无法生成一个自包含的包,该包显示Windows任务栏中已安装应用程序的图标。我可能错过了一个步骤,遇到环境问题或者自包含应用程序的图标配置可能略有错误,可能会在以后的版本中修复。测试开启:jdk7u21,NetBeans 7.3,Win7,InnoSetup。

从资源而不是文件中获取图标图像。

例如,如果将图像放在应用程序类的源目录中:

new Image(MyApplication.class.getResource("sicadcam.png").toExternalForm());

对于已安装的应用程序,这只会设置屏幕左上角显示的图标。要设置任务栏,桌面等图标,请按照Self-Contained Packaging section of the JavaFX Deployment Guide中的说明进行操作。

例如,要在我的Windows 7上为我的自包含应用程序获取安装程序的图标,我需要将图标放在<netbeansprojectdir>/package/windows/<myappname>.ico中(需要安装.ic才能让安装程序包装程序选择它up)文件并确保我的ant路径配置正确,详见How to change JavaFx native Bundle exe icon(希望在以后的NetBeans / JavaFX版本中不需要手动配置蚂蚁)。


从Oracle下载Ensemble sample application,查看如何为平台特定图标布置包目录。不幸的是,当我尝试从命令行构建Ensemble时,当安装Ensemble并作为独立应用程序执行时,我也无法让Windows 7在任务栏中使用Ensemble图标。


确保您的构建系统将您的图标复制到包含您的应用程序的jar文件中。要检查此项,请转到已安装应用程序的app目录并运行jar tvf <yourappjar>.jar =&gt;它应该在jar中显示图标资源文件的位置。

答案 1 :(得分:0)

你可以使用getClass()。getResourceAsStream(&#34; path.png&#34;) getResourceAsStream(&#34; path&#34;)返回一个输入stram,用于显示所需文件的路径,例如icon win.getIcons()。add(new Image(getClass()。getResourceAsStream(&#34; path.png&#34;))); 如果您正在使用jar文件,则运行Exception