我想为表格视图实现自定义滚动功能。因此,需要访问可见的行和单元格。
如何检测JavaFX tableview中的可见单元格和行?我在tableview的API描述中未找到任何有关此的信息。
谢谢
尝试在TableView中滚动到所需的行。我已经尝试过使用table.scrollTo(index),但是它无法正确滚动,因为它将所需的行设置为第一个可见行。
我已经在控制器上编写了下一个代码。
在这里,您还可以查看如何获取可见行。
/** * Used to manually scroll the Table */ private TableViewSkin<?> tableSkin; private VirtualFlow<?> virtualFlow; @Override public void initialize(URL location, ResourceBundle resources) { ... ... Platform.runLater( ()-> { loadVirtualFlow(); }); } /** * Loads the actual VirtualFlow */ private void loadVirtualFlow(){ tableSkin = (TableViewSkin<?>) tableContent.getSkin(); virtualFlow = (VirtualFlow<?>) tableSkin.getChildren().get(1); } /** * Scrolls the table until the given index is visible * @param index to be shown */ private void scrollTo(int index){ int first = virtualFlow.getFirstVisibleCell().getIndex(); int last = virtualFlow.getLastVisibleCell().getIndex(); if (index <= first){ while (index <= first && virtualFlow.adjustPixels(-1) < 0){ first = virtualFlow.getFirstVisibleCell().getIndex(); } } else { while (index >= last && virtualFlow.adjustPixels(1) > 0){ last = virtualFlow.getLastVisibleCell().getIndex(); } } }
使用此代码,您可以轻松滚动到所需的索引:
scrollTo(index);
将元素添加到列表中之后,请记住在调用scrollTo之前先调用loadVirtualFlow,这样VirtualFlow会得到更新,并且不会引发异常。