根据您的问题,我假设每个 AnchorPane 都是从不同的 FXML 文件加载的,并且您在应用程序中保留对它们的控制器的引用。
一个简单的解决方案是将文件信息放入控制器中。
您可以手动执行此操作...
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;
// ...
}
然后你可以简单地getLocation()
向你的控制器添加一个方法来检查它是从哪个文件加载的。
但是,对于您的潜在问题,可能有一个更好的解决方案,不需要检查特定的文件名。