设置阶段图标
Posted
技术标签:
【中文标题】设置阶段图标【英文标题】:Setting stage icon 【发布时间】:2019-08-09 22:04:40 【问题描述】:我的第一个意图是设置TextInputDialog
图标。但我是从设置舞台图标开始的。我看到几个 SO 问题的答案非常棒,通常包含 2 行代码。
首先我尝试将此图标放入 /resources/icons 但出现异常“无效的 URL 或找不到资源”。为了确保我在写入文件路径时不会出错,我将此图标移动到 /source/sample 目录。我使用代码(我将发布整个代码):
public void start(Stage stage) throws Exception
FXMLLoader loaderModyfikacjaKonfiguracji = new FXMLLoader(getClass().getResource("FXMLModyfikacjaKonfiguracji.fxml"));
Parent root = loaderModyfikacjaKonfiguracji.load();
stage.setTitle("Modyfikacja konfiguracji");
Image image = new Image("file:icon.png");
//stage.getIcons().removeAll();
stage.getIcons().add(image);
ControllerModyfikacjaKonfiguracji controllerModyfikacjaKonfiguracji = loaderModyfikacjaKonfiguracji.getController();
stage.setScene(new Scene(root, 510, 700));
stage.show();
在任何地方设置图标看起来都很简单。我也试过.jpg。不使用file:
会引发异常,使用file:
会编译,但我看不到更改图标的效果。我做错了什么或问题出在哪里?
【问题讨论】:
字符串必须包含资源的完整路径。如果没有方案,则路径被认为是相对于类路径的根目录。当图像位于“icons/icon.png”下时,您应该可以使用new Image("icons/icon.png")
。如果是包而不是根目录,则在路径前加上“resources/”。
【参考方案1】:
我之前已经成功用这个设置了一个图标
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("AppIcon.png")));
在我的例子中,应用程序 fxml 文件和 AppIcon.png 位于同一目录中。
如果你不想走那条路,我建议你试试
Image image = new Image("file:./icon.png");
但这是一个猜测。
【讨论】:
第一个解决方案有效。不幸的是,第二个没有。 ***.com/questions/10121991/javafx-application-icon "如果它被包装在一个包含的 jar 中,则需要使用以下方法:"stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
但我只是将此图标从另一个目录粘贴到 src 文件中。以上是关于设置阶段图标的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的应用程序的javafx 2.0中更改阶段标题栏上的图标[重复]