2013-05-28 85 views
2

我NetBeans上做了一个JavaFX应用程序,我把这段代码为图标设置窗口如何将图标设置为JavaFX应用程序的窗口?

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

,当我运行从NetBeans中的项目,它的工作原理确定:出现图标在窗口的左上角和任务栏中。该图像位于项目的根目录中。

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

如何或在哪里可以设置图像的路径,以便在安装应用程序时出现图标。

+0

我面临同样的问题,所以请你能告诉我如何通过JavaFX设置任务栏图标吗? – vijayk

回答

2

这只是对问题的部分回答,因为我一直无法生成一个自包含的软件包,该软件包在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(需要为安装程序打包一个.ICO把它捡起来)文件并确保我的ant路径配置正确,详见How to change JavaFx native Bundle exe icon(希望在以后的NetBeans/JavaFX版本中不需要手动配置ant)。


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


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

+0

我将代码改为' primaryStage.getIcons()。add(new Image(Gansito.class.getResource(“sicadcam.png”)。toExternalForm()));'但是我得到消息'Exception in Application start method java.lang.reflect.InvocationTargetException ' – Adrian

+0

@Adrian我试了一下,并用我的发现更新了我的答案 - 我没有得到一个InvocationTargetException,所以我不能帮助你 - 但是我也没有设法实现你想要的图标的结果任务栏:-( – jewelsea

+1

@ Jewelsea ..我面临同样的问题,所以请你可以告诉我如何通过JavaFX设置任务栏图标? – vijayk

0

,您可以在使用的getClass()。的getResourceAsStream(“path.png”) 中的getResourceAsStream(“路径”)是返回一个输入STRAM因为你需要它,例如用于图标 赢得任何文件的路径。 getIcons()。add(new Image(getClass()。getResourceAsStream(“path。png“))); 如果你正在做一个jar文件运行时出现异常

相关问题