gpt4 book ai didi

java - 如何获取当前加载的fxml文件的名称?

转载 作者:行者123 更新时间:2023-11-30 08:12:42 26 4
gpt4 key购买 nike

我有BorderPane ,分为 3 AnchorPane是不时变化的。可以满吗.fxml文件名如“MainScreen.fxml”?我可以得到AnchorPaneSystem.out.println(getRootLayout().getCenter()); ,但我不知道如何获取它的名称。

这只是我需要从主类调用位于我的 Controller 之一的方法。但我只想在当前正在使用该 Controller 的某些 fxml 文件时调用它。

简而言之:如果 MainScreen.fxml 正在使用,我将调用它的 MainScreenController 方法,如果没有,那么我不会。

最佳答案

根据您的问题,我假设每个 AnchorPane 都是从不同的 FXML 文件加载的,并且您在应用程序中保留对其 Controller 的引用。

一个简单的解决方案是将文件信息放入 Controller 中。

您可以手动执行此操作...

URL location = getClass().getResource("MainScreen.fxml");
FXMLLoader fxmlLoader = new FXMLLoader(location);
// ... more fxmlLoader configuration ...
fxmlLoader.load();

// assuming your own Controller class has a setLocation method
Controller c = (Controller) fxmlLoader.getController();
c.setLocation(location);

...或依赖 FXMLLoader。

// your own Controller class
public class Controller
{
// the URL will be automatically injected by the FXMLLoader
// careful: the name of the field must be 'location'
@FXML
private URL location;

// ...
}

然后您只需向 Controller 添加一个 getLocation() 方法即可检查它是从哪个文件加载的。

但是,对于您的根本问题可能有更好的解决方案,不需要检查特定文件名。

关于java - 如何获取当前加载的fxml文件的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com