gpt4 book ai didi

javafx - 表格 View 可见行

转载 作者:行者123 更新时间:2023-12-01 08:57:27 25 4
gpt4 key购买 nike

我想为 tableview 实现自定义滚动功能。因此需要访问可见的行和单元格。

如何检测 JavaFX 表格 View 中的可见单元格和行?我在 tableview 的 API 描述中没有找到任何相关内容。

谢谢

最佳答案

在 TableView 中尝试此操作以滚动到想要的行。我试过使用 table.scrollTo(index) 但它不能正确滚动,因为它将想要的行设置为第一个可见的。

我已经在我的 Controller 上编写了下一个代码。

在这里,您还可以看到如何获取可见行。

/**
* 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);

添加元素到列表后,记得调用 loadVirtualFlow 在调用 scrollTo 之前,VirtualFlow 会得到更新并且不会引发异常。

关于javafx - 表格 View 可见行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com