JavaFX中滑动行标题的表格控制

问题描述:

iTunes中的专辑视图具有光滑的效果,专辑标题和封面艺术始终保持在视图中。如果你滑下屏幕,他们会留在屏幕的顶部,直到碰到下一张专辑,然后他们滑开。JavaFX中滑动行标题的表格控制

iPad screenshot

注意顶部的专辑如何仍然是完全可见,即使用户已经向下滚动一个方式。

  1. 什么是这种控制或效果被称为?我正在试图向Google提供空白。

  2. 我该如何在JavaFX中做到这一点?我想在我的基于Java的GUI中模仿这一点。 TableView能做到这一点,或者一些第三方控制?

+2

该效果是UITableView中节标题的正常行为。 – rdelmar 2014-09-21 19:17:11

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

然后重写ScrollPane的onScroll行为。滚动的算法可以像这样:

有两种模式。

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

2)滚动到相册滚动ScrollPane的数量直到当前行的高度。滚动大于当前行高度的数量将移动到下一个相册并将模式切换回滚动到该相册。 3)边缘情况:在ScrollPane内滚动到ScrollPane的scrollHeight边界之外(介于0和scrollHeight之间的范围内)立即移动到下一个相册并将模式切换回Scrolling IN该相册。

我想举一个代码示例,但我从来没有见过任何人尝试这样做。我只知道你能做到。

+0

作为推论,它看起来像iTunes案例中有两个可滚动的窗格,因为左窗格和右窗格的高度不一样。您可以通过在左侧窗格中滚动专辑封面来锁定右侧窗格中的TableView的滚动,而不是切换模式,您可以在给定时间在哪个窗格滚动之间来回切换。这将产生我描述的相同效果,而不需要您的窗格尺寸相同。 – 2014-10-02 23:16:04

这是如何在UITableView中将节标题用作默认值。

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

这会帮助你了解如何创建和使用的UITableView

+0

UITableView具有我喜欢的效果,但我的目标平台/ API是Java中的JavaFX GUI库。我想在那里复制UITableView的行为。 – 2014-09-26 14:51:45

我建议你去看看的SpreadsheetView在ControlsFX

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

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

无论如何,如果您想在TableView中实现该行为,您将在SpreadsheetView代码中找到非常有用的技巧。