【问题标题】:How can I set an icon to the window of a JavaFX application?如何为 JavaFX 应用程序的窗口设置图标?
【发布时间】:2013-05-22 22:24:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我也遇到了同样的问题,请问您能告诉我如何通过 JavaFX 设置任务栏图标吗?

标签: netbeans window icons javafx


【解决方案1】:

这只是问题的部分答案,因为我无法生成一个独立的包,该包在 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 以便安装程序打包程序将其拾取)文件并确保按照How to change JavaFx native Bundle exe icon 中的详细说明正确配置了我的 ant 路径(希望在以后的 NetBeans/JavaFX 版本中不需要手动配置 ant)。


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


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

【讨论】:

  • 我将代码更改为primaryStage.getIcons().add(new Image(Gansito.class.getResource("sicadcam.png").toExternalForm()));,但收到消息Exception in Application start method java.lang.reflect.InvocationTargetException
  • @Adrian 我尝试了更多,并根据我的发现更新了我的答案 - 我没有收到 InvocationTargetException 所以我无法帮助你 - 但我也没有设法实现结果你想要任务栏中的图标:-(
  • @Jewelsea..我也遇到了同样的问题,请问您能告诉我如何通过 JavaFX 设置任务栏图标吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2018-05-24
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多