【问题标题】:JavaFX's version of WPF's UniformGrid?JavaFX 的 WPF 的 UniformGrid 版本?
【发布时间】:2013-06-12 07:52:55
【问题描述】:

我开始在一个新应用程序上使用 JavaFX,我希望在屏幕上获得与 WPF 的 UniformGrid 相同的布局。有 TilePane,但它不同(我猜类似于 WrapPanel)。

到目前为止,我的方法是(对于一个集合 [size = N],我想显示为“图块”):

  1. 使用 TilePane t。
  2. t.setPrefRows(ROUNDUP(sqrt(N)))

这可能不是最好的方法。 你知道更好的解决方案吗?也许是可调整大小的?

【问题讨论】:

    标签: user-interface javafx uniformgrid


    【解决方案1】:

    听起来你想要一个布局:

    1. 每行有固定数量的单元节点。
    2. 每个单元节点具有相同的高度和宽度。

    我不熟悉 WPF 或 UniformGrid,但我认为以上是您想要的。

    TilePane 可能不太适合

    似乎TilePane 非常适合这个,但是,正如您所发现的,它并没有真正表现出这种开箱即用的行为。使用 TilePane,您可以设置首选的行数,但是当您调整 TilePane 的大小时,行数和列数会随着瓷砖重新排列以适应可用区域而改变。

    使用带有绑定和首选项设置或约束的 GridPane

    要获得每行固定数量的单元格,请使用GridPane。 GridPane 在调整大小时将保持固定数量的行和列。为确保每个单元格节点具有相同的高度和宽度,您可以监听 GridPane 的高度和宽度属性,并在更改时设置子元素的最小/最大/首选大小,以便它们都具有相同的大小.或者对 GridPane 的行和列设置一些约束,例如 setPercentWidthsetPercentHeight

    为了演示这种方法,ColorChooser sample 为可调整大小的 ColorChooser 提供了一些代码,每个网格行具有固定数量的颜色样本,并且随着包含网格的整体增长或缩小,颜色样本会增长和缩小以适应可用区域视情况而定。颜色样本本身不一定保持相同的高度/宽度比,但您可以通过在子元素上设置适当的最小/最大/首选尺寸轻松实现这一点。

      

    创建您自己的布局

    作为使用更改侦听器和在子级上设置最小/最大/首选大小的替代方法,您可以通过子类化 Pane 创建一个 UniformGrid 类并实现 layoutChildren 方法来实现自己的布局管理器。在 layoutChildren 中,根据需要排列 UniformGrid 子项的大小和位置。您可以参考source code of an existing Pane 查找如何创建自己的布局的示例。

    调查第 3 方布局

    ControlsFX 项目有一个 GridViewMigLayout,它们可能提供 UniformGrid 的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 2017-11-17
      • 1970-01-01
      • 2015-04-29
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多