当前位置: 首页 > 知识库问答 >
问题:

如何正确地进行嵌套JavaFX GridPanes布局?

羊冠玉
2023-03-14

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

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

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

但是,在我的ChangeListener中。changed()实现,一切都不同。调用<code>requestLayout()[0,0,0,0]!看起来这里发生了一些异步的事情,但我对JavaFX不熟悉,不知道是什么。

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

共有1个答案

祝昊东
2023-03-14

每个最里面的 GridPane 对象都有一个 ColumnConstraints 对象,其百分比宽度100。删除将此(不必要的)ColumnConstraints 对象添加到最里面的 GridPane 对象的代码,修复了仅当包含的 Label 对象将 wrapText 设置为 true 时才出现的布局错误。

 类似资料:
  • 重写这样的东西的优雅方法是什么 使用Java 8的功能? 我在找类似的东西 (在Java,从lambda forEach()返回),但是,将其编写为嵌套循环会遇到一些麻烦。 建议?

  • 我正在尝试使用测试驱动设计方法编写一个应用程序--我对单元测试很陌生,所以我只是想知道测试正确输入和异常的正确方法是什么。 我有一个用于加载配置文件的类: null 另外,这3个测试是否都有try{}catch(){}语句?在第一个测试中,正确性是隐含的,在第二个和第三个测试中,我无论如何都在检查异常,所以异常对测试没有影响。

  • 问题内容: 我正在尝试了解如何正确观察道具的一些变化。我有一个父组件(.vue文件),它从ajax调用接收数据,将数据放入对象中,并通过v- for指令使用它来呈现某些子组件,以下是我的实现的简化: …然后在标签内: 项目对象是这样的: 现在,在我的孩子“玩家”组件中,我试图观察任何Item的属性变化,并使用: 它有效,但是对我来说似乎有点棘手,我想知道这是否是正确的方法。我的目标是每次更改或获取

  • 我有4个片段,其中一个片段中有一个viewpager和一个不同的类,我用3个其他片段定义了viewpager的适配器,第一次打开此片段时,所有子片段都正确显示在viewpager中,但当我切换(使用transaction.replace)到另一个片段并再次返回时,子片段消失了,我不能使用ChildFragmentManager,因为它在代码中显示错误(ChildFragmentManager无法解

  • 目前,我正在尝试在我的反应应用程序中使用语义用户界面。它目前正在改变整个应用程序css。我查找了一个解决方案来执行嵌套的scss导入,以将其隔离到div。在这样做的时候,我得到了这个错误: ./src/组件/_员工。scss(./node_modules/css loader/dist/cjs.js??ref--6-oneOf-5-1!。/node_modules/postscs loader/s

  • 问题内容: 我对使用Spring将对象注入到类中有疑问。我在项目中使用了以下代码: 然后通常在以下方法上使用它: 否则,我在Spring示例中发现了注入构造函数的情况: 所以两者都正确吗?还是每个都有其属性和用法? 问题答案: tl; dr-构造函数注入是执行DI的最佳方法 后者是正确的,并不是因为Spring或任何依赖注入容器,而是面向对象的类设计原则。 细节 应该设计一种类型,以便您只能根据其