尝试在TableView中滚动到所需的行。我已经尝试过使用table.scrollTo(index),但是它无法正确滚动,因为它将所需的行设置为第一个可见行。
我已经在控制器上编写了下一个代码。
在这里,您还可以查看如何获取可见行。
private TableViewSkin<?> tableSkin;private VirtualFlow<?> virtualFlow;@Overridepublic void initialize(URL location, ResourceBundle resources) { ... ... Platform.runLater( ()-> { loadVirtualFlow(); });}private void loadVirtualFlow(){ tableSkin = (TableViewSkin<?>) tableContent.getSkin(); virtualFlow = (VirtualFlow<?>) tableSkin.getChildren().get(1);}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会得到更新,并且不会引发异常。



