如何在一个场景中使用多个窗格,同时使每个窗格独立工作?

时间:2019-06-11 15:43:09

标签: java javafx

基本上,我想在一个场景中包含多个窗格,并且我可以让每个窗格独立工作。 例如,我想在JavaFX中做类似的事情。

image

因此,我希望背景场景与StackPane一起用于按钮,并且希望滚动窗格对GUI中的可滚动列表部分起作用。

我看到JavaFX Have multiple Panes in one scene?遇到了与我类似的问题,但我不知道如何在代码中实现它。

VBox root = new VBox();
root.getChildren().addAll(continueGameScreen.getMyNodes());
root.setSpacing(10);
root.setPadding(new Insets(10));
ScrollPane scrollPane = new ScrollPane();
scrollPane.setContent(root);
scrollPane.setPannable(true);
Scene scene = new Scene(root, 1366, 768);

homeStage.setScene(scene);
homeStage.show();

我如何像一个单独的框那样创建一个框,其中只有可滚动列表,并且其外部的按钮被认为是不同的对象,但是在同一场景中。 任何帮助都感激不尽。

如果这与我链接的帖子绝对有关,请提供如何使此GUI正常工作。 谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定我是否了解您,但是如果您想在一个场景中使用多个窗格,则还需要向fx:id分配一个container,然后将其注入您的控制器。 然后,在您的控制器中,您将必须加载新场景

FXMLLoader loader = new FXMLLoader(getClass().getResource(url));
AnchorPane anchorPane = fxmlLoader.load();

清理您的主容器中的任何东西:

mainContainer.getChildren().clear();

最后,将场景发送到此

mainContainer.getChildren().add(anchorPane);

如果希望新场景获得其父级的宽度和高度,则必须使用

anchorPane.prefWidthProperty().bind(mainContainer.widthProperty());
anchorPane.prefHeightProperty().bind(mainContainer.heightProperty());