如何在JavaFX中使用FXML创建自定义对话框?
在网上的样本中,我发现大多数情况都是这样的
@Override
public void start(Stage stage) throws Exception {
Parent root =
FXMLLoader.load(
getClass().getResource( getClass().getSimpleName() + ".fxml" ));
Scene scene = new Scene(root);
即。从应用程序FXML
中加载start()
并构建根节点。
但是如果我扩展舞台怎么办?从FXML加载的位置?在构造函数中?还是在initStyle()
?或者用其他方法?
答案 0 :(得分:1)
您可以在主类中使用以下代码:
FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml"));
Parent root = (Parent)loader.load();
//Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
SampleController controller = (SampleController)loader.getController();
controller.setStageAndSetupListeners(stage);
在SampleController之后创建一个函数setStageAndSetupListeners(),它将接受你的舞台,现在你可以轻松使用它。