【问题标题】:JavaFX UI will not shrink, after being expandedJavaFX UI 扩展后不会缩小
【发布时间】:2015-11-19 01:03:10
【问题描述】:

好的,我整天都在做这个,似乎无法理解发生了什么。

我有一个 TabPane,其中有一个 Tab,Tab 的内容是一个 AnchorPane,而其中的一个 SplitPane。

在 SplitPane 的右侧,我有一个 ScrollPane,其中有一个 VBox。我将在 FXML 中构建的控件放入该 VBox 中,因此它们一个接一个地出现。一切正常。

我几乎每次都使用 AnchorPanes 来处理窗口大小的调整,并且一切正常,除非我缩小包含 ScrollPane 的 SplitPane。当我放大窗口时,一切正常,一切都按照它的锚点移动,看起来不错。当我来缩小窗口时,虽然 ScrollPane 本质上拒绝缩小,并且我的 UI 也因此变得一团糟,但 SplitPane 似乎被推出了窗口,因为它不能再缩小,因为 ScrollPane 赢了t.

这只发生在缩小窗口时,如果我从一个很小的窗口开始,UI 很好,但是如果我拉伸窗口,然后将它恢复到原来的大小,UI 就是全部弄乱。这几乎就像一旦我用锚点拉伸 ScrollPane,之后它就会拒绝变小。好像和ScrollPane中的VBox的内容有一点关联,空的VBox好像可以让ScrollPane再缩小一点,但还是有问题。

所以基本上,如果我以 100x100 像素打开舞台,UI 看起来不错。如果我然后将窗口拉伸到 800x800,看起来很好,如果我认为调整到 500x500,UI 就会混乱。所以不是 UI 不适合,而是一旦变大,我的 ScrollPane 似乎拒绝再次缩小。

目前我几乎没有想法,我的应用程序的其余部分也与 AnchorPanes 放在一起,并且运行良好。

任何想法,任何东西,都非常感谢。

加里

【问题讨论】:

  • 体验完全相同的行为。你搞清楚了吗?
  • 有点,我做了很多事情,其中​​一些比其他的效果更好。首先,当绑定到 'width' 属性时,还要设置 'min' 和 'max' 宽度属性,这似乎有帮助。另外,把一个ChangeListener放到width属性上,然后在Platform.runLater中设置其他东西的宽度,这似乎给了东西一个布局的机会,然后设置了宽度。不过,我仍然不确定我为什么会出现这种行为。首先尝试设置 min/max/pref 宽度,这在某些领域效果很好。
  • 为了任何人的阅读,最终解决这个问题的一个好方法是在“装饰性”的节点上设置管理(假)并手动绑定宽度/高度。这意味着节点仍会拉伸以填充其区域,但不会阻止该区域变小。

标签: java javafx fxml


【解决方案1】:

在 Scenebuilder 上设置最大和最小宽度和高度以使用首选尺寸而不是计算机尺寸为我解决了这个问题。1

【讨论】:

  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
猜你喜欢
  • 2012-07-16
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2018-02-26
相关资源
最近更新 更多