首页 文章

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

提问于
浏览
3

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

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

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

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

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

2 回答

  • 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文件中 . 要检查这一点,请切换到已安装应用程序的app目录并运行 jar tvf <yourappjar>.jar =>它应该在jar中显示图标资源文件的位置 .

  • 0

    你可以使用getClass() . getResourceAsStream(“path.png”)getResourceAsStream(“path”)返回一个输入stram,用于你需要的任何文件的路径,例如icon win.getIcons() . add( new Image(getClass() . getResourceAsStream(“path.png”)));如果你正在makking jar文件运行没有异常

相关问题