JavaFX的TableView(和TreeTableView)赢得了我最近的“ JavaFX缺失功能”调查以及许多后续讨论中(尤其是苏黎世JavaFX Meetup小组的成员 )中提到最多的控件的价格。 )。 我想原因之一是一个简单的事实,即几乎每个应用程序都需要一个表视图。
TableView最需要的两个功能/改进是冻结行/列和更好的编辑支持。
冻结行/列
- 冻结/锁定行–可以使一个或多个行停留在表格视图的顶部或底部。 尝试在列中显示值的总和时,通常需要此功能。
- 冻结/锁定列–可以将一个或多个列保留在表格视图的左侧或右侧。 同样,显示行中值的总和或显示行的某种标题。 对于我的FlexGanttFX框架,我希望在左侧有一个列来显示行号(是的,例如在Excel中)。
我认为冻结列/行是TableView计划的一项功能,但由于时间和资源的限制,并没有将其纳入最终版本。 如果我没记错的话,实际上TableView代码库中有一些用于此目的的遗留代码/注释。
编辑支持
- 只需开始输入新值即可编辑单元格值–当前,用户必须先双击一个单元格。
- 流利的键盘导航,可通过TAB,SHIFT_TAB,ENTER和箭头键从一个单元格导航到另一个单元格。
- 编辑值时的单元格验证。 如果不输入有效值或取消编辑,用户将不能离开单元格。
当前的编辑支持可能是使开发人员在使用TableView时最讨厌的一件事,因为他们知道用户希望得到更多。 我本人已经在两个项目上工作过,我们不得不修改TableView,以便它可以让用户直接编辑值。
杂
要求的其他功能包括:
- 单元格/行跨度–使单元格跨多个行和/或列的能力。
- 过滤器用户界面–表格视图通常允许用户在每列中选择一个或多个过滤器。 然后,所有过滤器的集合确定可见行。 在JavaFX中,可以轻松地在模型中完成此操作(通过SortedList和FilteredList),但是开发人员希望直接在TableView内部(在标头内部)有内置控件。
- 自动列大小调整–一种调整列宽以适应其内容的方法,以确保所有值的可读性。 该功能实际上是在TableView代码库中实现的。 当用户双击列标题的边缘时,它用于调整列的大小。 但是,此代码不是公开的。 我最近发布了一篇文章,展示了如何执行此操作 。
我认为上述所有功能都是可以通过良好的表控件实现的,但是我敢肯定,JavaFX团队本身不会在这方面取得任何进展。 我认为,从Oracle的角度来看,当前的表实现被认为“足够好”,因此我认为由第三方来提出一个好的替代方案(开源或商业)将取决于第三方。 我就如何实现自己的表视图控件进行了很多头脑风暴,但得出的结论是,它太大了,无法成为一个简单的附带项目。 这很不好,但这也意味着其他人有可能创造出一种商业产品并实际上从中赚钱。 因为就像我一开始所说:几乎所有应用程序都需要表视图。
下一个“缺少功能”博客将介绍性能和质量。
敬请关注!
PS :对于上面的某些功能,您可能需要尝试ControlsFX项目中的SpreadsheetView。
翻译自: https://www.javacodegeeks.com/2016/02/javafx-missing-features-survey-table-view.html