在JavaFX中使用滑动行标题的表控件

时间:2014-09-21 18:32:30

标签: java javafx tableview javafx-8

iTunes中的专辑视图具有光滑的效果,其中专辑标题和封面艺术始终保持在视图中。如果您向下滑动屏幕,它们将固定在屏幕顶部,直到它们碰到下一个专辑,然后它们就会滑落。

iPad screenshot

请注意,即使用户向下滚动,最高专辑仍然完全可见。

  1. 这个控制或效果叫什么?我想要谷歌为它做空白。

  2. 如何在JavaFX中执行此操作?我想在我的基于Java的GUI中模仿这个。 TableView可以执行此操作,还是可以执行某些第三方控制?

3 个答案:

答案 0 :(得分:4)

最简单的方法是使用ScrollPane。在ScrollPane中,您可以定义行及其布局(可能每行都是一个包含ImageView的HBox和一个设置为ImageView高度的TableView)。然后,ScrollPane中的TableViews需要让ScrollPane覆盖它们的滚动 - 也就是说,它们的onScroll会冒泡到ScrollPane。

然后覆盖ScrollPane的onScroll行为。滚动算法可以是这样的:

有两种模式。

1)在相册中滚动滚动该行中的TableView。如果滚动超出了TableView的scrollHeight(0和scrollHeight之间的范围)的边界,则模式切换到滚动到相册。

2)滚动到相册会将ScrollPane的数量滚动到当前行的高度。滚动大于当前行高度的数量将移至下一个专辑并将模式切换回滚动到该专辑。

3)边缘情况:ScrollPane内的滚动超出了ScrollPane的scrollHeight(0和scrollHeight之间的范围)的界限,立即移动到下一个专辑并将模式切换回滚动到该专辑。

我给出了一个代码示例,但我从来没有真正看到有人试图这样做。我知道你可以做到。

答案 1 :(得分:2)

我建议您查看ControlsFX

中的SpreadsheetView

SpreadsheetView允许您在屏幕顶部修复任意数量的行。所以你会有你行为的第一部分。

关于撞到另一个的事实,使用SpreadsheetView会更困难但并非不可能。

无论如何,如果你想在TableView中实现这种行为,你会在SpreadsheetView代码中找到非常有用的技巧。

答案 2 :(得分:0)

这是节标题在UITableView中作为默认值的方式。

https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UITableView_Class/index.html

这应该可以帮助您创建和使用UITableView