gpt4 book ai didi

JavaFX 8 - 同步两个垂直堆叠的 TableView 上的列

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:06 24 4
gpt4 key购买 nike

我正在使用 JavaFX 8,我的用户界面需要两个 TableView,一个垂直位于另一个的上方(即 VBox 的两个子级)。 VBox 本身位于 SplitPane 中,因此表格的宽度可以增大或缩小。

这两个表各有 5 列,并且这 5 列在两个表之间是相同的。

这是我需要的:

1) 每个表中的第 1、2、4 和 5 列的大小应根据 (A) 它们自己计算的大小(即基于其内容)或 (B) 另一个表中同一列的计算大小中的最小值来调整。

2) 每个表中的第 3 列应占据剩余空间。

这一切的实际结果是,所有列始终在两个表之间垂直对齐,并且列 1、2、4 和 5 始终足够大以显示其内容。

我不需要代码,但是任何人都可以建议一种实现此目的的策略(例如,将这里的属性 A 绑定(bind)到那里的属性 B,或者其他什么)?我希望避免使用冗长或复杂的监听器系统来保持所有内容同步。

如果更容易的话,所有列都不需要由用户调整大小。

更新

之所以有两个表而不是只有一个(这将使整个事情变得更容易)是因为它们之间有一个区域显示一些摘要信息。如果可以将摘要信息显示为 TableRow(可能强制为 5 列),那么这也可能是一个可行的答案。

更新#2

另请记住,两个表中的一个、两个或两个表都可能没有垂直滚动条。

最佳答案

我通过创建第三个包含所有行的不可见表解决了这个问题。我将第三个表的高度设置得非常小,以保证它有一个垂直滚动条。

从那里,我只需为该一个(隐藏)表正确调整列的大小 - 这是一个已经发布了许多解决方案的问题 - 然后将所有可见列的 prefWidth 绑定(bind)到隐藏表中的类似列。

所以,基本上是:

SplitPane
-> StackPane
-> VBox
-> Top TableView (column widths bound to Hidden TableView)
-> Bottom TableView (column widths bound to Hidden TableView)
-> Hidden TableView (height 10px and `CONSTRAINED_RESIZE_POLICY`)

需要 StackPane,这样隐藏的 TableView 实际上不会占用屏幕上的任何空间。 (另一种选择是使其不受管理,但这需要更多工作)。

它工作得很好,但绝对看起来是一个拼凑。我不会接受我自己的答案(如果可能的话)...我仍然想要一个更好的答案!

关于JavaFX 8 - 同步两个垂直堆叠的 TableView 上的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44005148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com