我有两个FXML文件和一个Controller。
我已经发布了我试图创建第二阶段的代码(并且失败了)。
错误信息是:
javafx.scene.layout.AnchorPane cannot be cast to javafx.fxml.FXMLLoader
我该如何解决?
@FXML private Scene trial_scene;
@FXML public Stage m;
@FXML public void click(Stage stage) throws IOException {
m = new Stage();
openWindow();
}
@FXML private void openWindow() throws IOException {
FXMLLoader root =FXMLLoader.load(
SampleController.class.getResource(
"settings.fxml"
)
);
m.initModality(Modality.WINDOW_MODAL);
m.setTitle("My modal window");
m.setScene(trial_scene);
m.show();
}
答案 0 :(得分:1)
静态方法FXMLLoader.load返回.fxml文件中定义的根节点(以及objet层次结构)。在你的情况下,它似乎是一个AnchorPane。
你的第一行应该是
AnchorPane root = FXMLLoader.load(SampleController.class.getResource("settings.fxml"));
使用此对象构建新场景,例如
Scene trial_scene = new Scene(root, 300, 300, Color.BLACK);
然后将此场景传递到新阶段
m.setScene(trial_scene);