这个想法是:在 N 列的 TableView 上,即使使用水平滚动条,前 M 列也始终可见。
唯一接近我要求的是这个 Binding two tableviews together such that they scroll in sync 。 在我看来,并排放置两个表的想法并不是最好的,因为
1) 两个表之间的列排序部分独立:如果使用相同的 observableList,则行在两个表中排序,但不可能对多个列进行排序,其中至少有一列不在表中同 table
2) 没有与鼠标滚轮或方向键同步滚动
我知道,我可能可以使用事件处理程序和监听器来处理此类问题,但我希望可以只使用一张表。
所以,问题是:TableView 或 TableColumns 上是否有任何可配置的属性来实现我正在寻找的行为?
最佳答案
我能够卡住 javafx TableView 中的列。我们需要创建自定义表列类,其中我们将有两个方法 setFixed
和isFixed
这将用于使某些列固定。
除此之外,您还需要创建自己的
TableViewskin
TableHeaderRow
- 基本上在这个类中你需要覆盖getRootHeader()
方法-
NestedTableColumnHeader
- 在此类中覆盖layoutChildren()
方法并添加新方法来布局fixedColumns
-
VirtualFlow
-
TableView
- 覆盖createDefaultSkin()
,添加新的booleanProperty showColumnHeader
和一个ObservableArrayList
对于fixedTableColumn
-
TableRow
- 覆盖createDefaultSkin()
-
TableRowSkinBase
- 覆盖layoutChildren()
处理固定列的方法。
关于javafx-2 - JavaFX,如何卡住TableView中某些列的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27469164/