javafx - 如何正确制作嵌套的 JavaFX GridPanes 布局?

标签 javafx gridpanel

上下文:我正在使用 java1.7.0_07 和 Jython 构建 JavaFX 应用程序。我的应用程序有一个 ScrollPane,其中包含一个 GridPane,其中包含可变数量的 GridPanes。每次 TreeView 选择更改时,我的应用程序都会丢弃并重建最里面的 GridPanes

问题:当我在 TreeView 中选择某些内容时,最里面的 GridPane 非常大,除了第一个最里面的 GridPane 之外的所有 GridPane 都被推到了 ScrollPane 的可视区域之外。无论如何,ScrollPane 不显示滚动条,给人的印象是只有一个最里面的 GridPane 对象。手动调整包含 ScrollPane 的窗口大小可以“修复”问题!从添加最里面的 GridPanes 的那一刻起,如何使它们达到该大小?

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

但是,在我的 ChangeListener.changed() 实现中,一切都不同了。调用 requestLayout() 似乎没有做任何事情。此外,我最里面的每个 GridPanes 的边界都是 [0,0,0,0]!看起来这里发生了异步的事情,但我是 JavaFX 新手,我不知道是什么。

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

最佳答案

最里面的每个 GridPane 对象都有一个 ColumnConstraints 对象,其 percentWidth100。删除将此(不必要的)ColumnConstraints 对象添加到最里面的 GridPane 对象的代码修复了仅当包含的 Label 对象具有wrapText 设置为 true

关于javafx - 如何正确制作嵌套的 JavaFX GridPanes 布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240063/

相关文章:

datetime - ExtJs4,如何在gridpanel中手动编辑具有文本格式(没有时间字段或日期字段)的单元格日期时间?

Javafx 网格 Pane ..无法动态添加行..而不收缩

javafx - 获取 java.lang.NoSuchMethodException : javafx. application.Platform.startup(java.lang.Runnable)

java - Spring 启动/JavaFX : adding a shutdown hook (ctrl-c) that still has access to JPA

java - label.setText() 发生 NullPointerException

asp.net - 如何设置 ext :SpinnerField at edit time of gridpanel 的 maxValue

css - 来自 Record.Data 的 ExtJs gridPanel 动态单元格背景颜色

JavaFX 通过 setOnKeyPressed 更新当前位置

javafx - 使用 AdoptOpenJDK 和 OpenJFX 时出现以下错误。 "Error initializing QuantumRenderer: no suitable pipeline found"

extjs - 使用带有垂直标题列的 ExtJS 网格