如何在JavaFX中更改任务栏上默认的Java标志exe图标?

5
我在Netbeans上制作了一个JavaFX应用程序,并放置了以下代码以设置窗口图标。
primaryStage.getIcons().add(new Image("file:sicadcam.png"));

当我从Netbeans运行项目时,它可以正常工作:图标出现在窗口和任务栏中。我需要将图像放在哪里。

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

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


可能是如何为JavaFX应用程序的窗口设置图标?的重复问题。 - jewelsea
2个回答

8

您应该将图标放置在您的jar文件或类路径中,然后通过资源函数加载它。

例如,如果您将其放置在bin文件夹中,放到与您的类相同的包中,则以下内容应该有效:

primaryStage.getIcons().add(new Image(this.getClass().getResourceAsStream("sicadcam.png")));

我把图像文件放在com.test.action包中,程序可以运行但没有显示图标? - vijayk
我应该把图片文件放在哪里? - vijayk
尝试使用 getResourceAsStream("/com/test/action/sicadcam.png"); - Udo Klimaschewski
@Udo,谢谢,它正在工作......如果我想调用.ico文件而不是.jpg/.png文件,那么如何调用?如果图标没有反映出来,该怎么办? - vijayk
1
据我所知,Java本身不支持.ico格式。您应该使用图像工具将图像转换为其他格式。或者您可以使用外部库手动读取它,参见:https://dev59.com/DGXWa4cB1Zd3GeqPRehv。 - Udo Klimaschewski
使用FX 17,图标仅显示在应用程序窗口的左上角,但不在任务栏中显示。有什么解决方法吗? - horvoje

0

我怀疑图片没有被处理为资源并且没有进入您的Jar文件。您能验证一下它是否存在吗?(例如,您可以通过Total Commander按Ctrl+PgDown进入存档来执行此操作)。

另一个原因可能是NetBeans使用了不同的运行配置和类路径。您的图片在哪里?如果它在包根目录中(即包含顶级包的文件夹),您可能可以通过以下方式访问它:ImageIO.read(getClass().getResourceAsStream("/sicadcam.png"))

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接