JavaFX:stage.getIcons().add() 在 JavaFX 应用程序中不工作
JavaFX: stage.getIcons().add() not working in a JavaFX app
我想为我的 JavaFX 应用程序添加一个程序图标。我知道该怎么做 - 我有一个 Stage 对象定义为主应用程序中的一个字段 class:
private Stage stage;
然后在初始化主阶段的方法中我有一段代码:
Scene scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.getIcons().add(new Image("file:view/images/programicon.png"));
primaryStage.show();
我有一个包com.myapp.view
,在这个包里我有另一个包:com.myapp.view.images
,我粘贴了我想用的图标,叫programicon.png
。之前写错了:
primaryStage.getIcons().add(new Image("view/images/programicon.png"));
我遇到了一个例外:
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1110)
但是当我将 url 更改为 file:view/images/programicon.png
- 现在没有异常,但程序图标仍然保持默认。
programicon.png
是一张没有背景的 512x512 图片。
我找到了解决办法。更改自:
primaryStage.getIcons().add(new Image("file:view/images/programicon.png"));
至
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("view/images/programicon.png")));
成功了。
我想为我的 JavaFX 应用程序添加一个程序图标。我知道该怎么做 - 我有一个 Stage 对象定义为主应用程序中的一个字段 class:
private Stage stage;
然后在初始化主阶段的方法中我有一段代码:
Scene scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.getIcons().add(new Image("file:view/images/programicon.png"));
primaryStage.show();
我有一个包com.myapp.view
,在这个包里我有另一个包:com.myapp.view.images
,我粘贴了我想用的图标,叫programicon.png
。之前写错了:
primaryStage.getIcons().add(new Image("view/images/programicon.png"));
我遇到了一个例外:
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1110)
但是当我将 url 更改为 file:view/images/programicon.png
- 现在没有异常,但程序图标仍然保持默认。
programicon.png
是一张没有背景的 512x512 图片。
我找到了解决办法。更改自:
primaryStage.getIcons().add(new Image("file:view/images/programicon.png"));
至
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("view/images/programicon.png")));
成功了。