You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX中stage.getIcons().add(icon)无法添加窗口图标求助

解决JavaFX Stage图标不显示的问题

问题根源

你当前使用本地绝对路径加载图标,这种方式会因项目编译、运行环境的路径变化失效。src目录下的资源文件在编译后会被复制到编译输出目录,正确的做法是通过类路径加载资源。

修复步骤

1. 修改资源加载代码

替换原有的绝对路径加载方式,改用类路径读取资源:

// 非静态方法中使用
Image icon = new Image(getClass().getResourceAsStream("/java.png"), 64, 64, true, true);

如果是在静态方法内,用主类的Class对象获取资源:

// 替换YourMainClass为你的主类名
Image icon = new Image(YourMainClass.class.getResourceAsStream("/java.png"), 64, 64, true, true);

2. 配置IntelliJ IDEA资源目录

  • 打开File > Project Structure
  • 进入Modules,选中你的项目模块,切换到Paths标签,确认编译输出路径(默认是out/production/[模块名])正确
  • 切换到Resources标签,确保src目录被标记为Resources Root(未标记的话,右键src目录选择Mark Directory as > Resources Root)

3. 验证资源编译情况

运行项目前,检查out/production/[模块名]目录下是否存在java.png文件,若没有则执行Build > Rebuild Project重新编译。

修复后的完整代码

public void start(Stage stage) throws Exception {
    Group root = new Group();
    Scene scene = new Scene(root);

    // 类路径加载图标
    Image icon = new Image(getClass().getResourceAsStream("/java.png"), 64, 64, true, true);
    stage.getIcons().add(icon);
    stage.setTitle("Stage demo program wooot");

    stage.setScene(scene);
    stage.show();
}

额外提示

  • 类路径对文件名大小写敏感,确保文件名和代码中的拼写完全一致
  • 若使用Maven/Gradle构建项目,建议将资源文件放在src/main/resources目录下,构建工具会自动处理资源复制

内容的提问来源于stack exchange,提问作者Ernesto Mendoza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:37:04