3

我在 Netbeans 上制作了一个 JavaFX 应用程序,并将此代码用于将图标设置为窗口

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

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

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

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

4

2 回答 2

3

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

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

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

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

对于已安装的应用程序,这只会设置显示在屏幕左上角的图标。要设置任务栏、桌面等的图标,请按照JavaFX 部署指南的自包含打包部分中的说明进行操作,应该可以让您到达那里。

例如,要在我的 Windows 7 上为我的独立应用程序获取安装程序的图标,我需要将图标放在一个<netbeansprojectdir>/package/windows/<myappname>.ico(需要是 .ico 以便安装程序打包程序拾取它)文件中并确保我的 ant 路径已按照如何更改 JavaFx 本机 Bundle exe 图标中的详细说明正确配置(希望在以后的 NetBeans/JavaFX 版本中不需要手动配置 ant)。


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


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

于 2013-05-28T05:14:23.580 回答
0

你可以通过使用 getClass().getResourceAsStream("path.png") getResourceAsStream("path") 为你需要的任何文件的路径返回一个输入流,例如图标 win.getIcons().add(新图像(getClass().getResourceAsStream(“path.png”)));如果你正在制作一个 jar 文件,则运行时没有异常

于 2015-11-18T19:41:27.053 回答