如何使嵌套的JavaFX网格窗格正确布局?

如何使嵌套的JavaFX网格窗格正确布局?,javafx,gridpanel,Javafx,Gridpanel,上下文:我正在用java1.7.0_07和Jython构建一个JavaFX应用程序。我的应用程序有一个滚动窗格,其中包含一个GridPane,该GridPane包含可变数量的GridPane。每次树视图选择更改时,我的应用程序都会丢弃并重建最里面的网格窗格 问题:当我在树状视图中选择某个内容时,最里面的网格窗格非常大,除了第一个最里面的网格窗格之外,其他所有网格窗格都会被推到滚动窗格的可视区域之外。无论如何,滚动窗格不显示滚动条,给人的印象是只有一个最里面的GridPane对象。手动调整包含滚动

上下文:我正在用java1.7.0_07和Jython构建一个JavaFX应用程序。我的应用程序有一个滚动窗格,其中包含一个GridPane,该GridPane包含可变数量的GridPane。每次树视图选择更改时,我的应用程序都会丢弃并重建最里面的网格窗格

问题:当我在树状视图中选择某个内容时,最里面的网格窗格非常大,除了第一个最里面的网格窗格之外,其他所有网格窗格都会被推到滚动窗格的可视区域之外。无论如何,滚动窗格不显示滚动条,给人的印象是只有一个最里面的GridPane对象。手动调整包含滚动窗格“修复”内容的窗口大小!如何从添加网格窗格的那一刻起,将最里面的网格窗格设置为该大小

当然,我尝试的第一件事是从Jython解释器调用外部网格窗格上的
requestLayout()
,这与调整包含窗口的大小一样有效。这也是我发现最里面的网格是巨大的——我在每个最里面的网格上调用了
getBoundsInParent()

然而,在我的
ChangeListener.changed()
实现中,一切都是不同的。调用
requestLayout()。此外,我最里面的每个网格窗格的边界是
[0,0,0,0]
!看起来这里发生了一些异步的事情,但我对JavaFX还不熟悉,不知道是什么


更新:越来越近了!每个最里面的网格窗格都包含一个
标签
,我在每个标签上调用
setWrapText(true)
。如果我没有在标签上启用换行,则布局行为正确!如果我在每个标签上调用
setPrefHeight(40)
,即使启用了文本换行功能,布局也会正常运行,但我确实不喜欢尝试猜测要分配给每个标签的适当首选高度。我只希望标签以我“摆动”包含窗口时它们假定的边界开始。但是如何呢?

每个最里面的
网格窗格
对象都有一个
列约束
对象,其
百分比宽度
100
。删除将此(不必要的)
ColumnConstraints
对象添加到最里面的
GridPane
对象的代码,修复了仅当包含的
标签
对象的
wrapText
设置为
true

时出现的布局错误行为。是否尝试过Platform.runLater(new Runnable(){@Override public void run(){requestLayout();}}});我确实尝试过,但没有结果。从计时器调用requestLayout()是可行的。