gpt4 book ai didi

methods - JavaFX:ScrollPane 方法 getChildren() 不可见

转载 作者:行者123 更新时间:2023-12-01 04:56:47 24 4
gpt4 key购买 nike

我已经从 AnchorPane 和一些子元素创建了一个舞台(AnchorPane 及其子元素已在 Java Scene Builder 中创建),层次结构如下所示: Scene hierarchy

舞台和场景当然是在程序初始化时以编程方式创建的。我还想以编程方式添加 GridPane 作为图像中显示的 ScrollPane 的子项。在我的程序(特定窗口的 Controller )中,我可以获得对 ScrollPane 的引用:

@FXML
private ScrollPane srcPaneUsers;

(id srcPaneUsers 已通过 Scene Builder 属性窗口的相应字段给出)

但是!!:当我尝试通过 Controller 初始化方法的以下几行以编程方式添加在运行时创建的新 GridPane 时:

public void initialize(URL location, ResourceBundle resources) {
myGridPane = new GridPane();
srcPaneUsers.getChildren().add(myGridPane);
}

我得到一个编译时错误说“Parent 类型的 getChildren() 方法不可见。”所以我无法在运行时添加我的 GridPane。有什么想法吗?

最佳答案

您调用了错误的方法。你需要

srcPaneUsers.setContent(myGridPane);

getChildren() Parent 中定义的方法是一种 protected 方法。它在 Pane 中被覆盖成为公共(public)方法,因此对于布局 Pane ( GridPaneBorderPane 等),您可以直接操作子节点列表。

ScrollPane的层次结构是 ScrollPane extends Control extends Region extends Parent , 所以它继承了 protected getChildren()方法。这实际上是有道理的:ScrollPane 的子节点像视口(viewport)(剪辑内容的 View )和滚动条之类的东西:你真的不希望用户操纵它们,否则你最终得到的可能不再正确运行。 ScrollPane实际上只有一个节点是可配置的:ScrollPane 的节点正在提供一个 View :这被称为它的 content并通过 contentProperty() 访问, getContent() , 和 setContent()方法。

其他“类似容器的控件”的工作方式类似。 TabPane类公开了一个 getTabs()返回 ObservableList<Tab> 的方法;和 Tab类又公开了一个 contentProperty()这样您就可以访问每个单独选项卡的内容。 SplitPane选项卡显示 getItems()返回 ObservableList<Node> 的方法对于 Pane 中显示的节点。在 SplitPane 的情况下它的子节点不仅仅是项目:它们包括代表分隔线等的视觉组件。在这两种情况下,getChildren() method 是一个 protected 方法(继承自 Parent )。

请注意 Parent还定义了公共(public) getChildrenUnmodifiable()方法,它返回子节点列表的不可修改的 View 。您可以使用它来检查任何父级的节点层次结构,但不能修改它。 (但是,出于调试目的,尤其是为了使用 CSS,我建议使用 ScenicView。)

关于methods - JavaFX:ScrollPane 方法 getChildren() 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com