nai*_*jed 9 java javafx javafx-2 fxml
有没有办法从关联的类控制器获取FXML加载文件的Scene对象.
我正在做这样的事情:
@FXML
private AnchorPane anchor;
Scene scene = anchor.getScene();
Run Code Online (Sandbox Code Playgroud)
但我想要一个不引用AnchorPane控件的解决方案.
Ser*_*nev 13
为什么不?控制器是一个抽象类,除非你故意让他知道,否则他不会知道UI.
节点(包含AnchorPane)是另一个故事,它们几乎不存在于场景图之外.因此,向Node询问他的父母或场景是完全没问题的.
如果您仍想单独处理,则有下一种方法:
你可以创建一个自定义控制器并在加载后设置场景.请注意,在initialize()
调用时它尚未初始化.
public class MyController {
private void Scene scene;
public void setScene(Scene scene) { this.scene = scene; }
}
// loading code
FXMLLoader fxmlLoader = new FXMLLoader();
AnchorPane root = (AnchorPane) fxmlLoader.load(getClass().getResource("MyApp.fxml"));
MyController myController = (MyController) fxmlLoader.getController();
myController.setScene(scene);
Run Code Online (Sandbox Code Playgroud)您可以创建一个自定义fxml控件,它将包含控制器,他可以getScene()
自己调用.请参阅此处的示例:https://stackoverflow.com/a/10718683/1054140