搜索并找到TreeItem后,我可以滚动到TreeView中的选定项目吗?(JavaFX)



我有一个TreeView,里面有很多TreeItem。我已经构建了一个搜索函数,它可以工作并选择指定的TreeItem,但TreeView滚动函数不能滚动到它,所以必须手动操作,这一点都不方便。在搜索成功完成后,是否有方法以某种方式自动滚动到节点(TreeItem(?

搜索功能代码:

@FXML
private void searchButtonEvent(ActionEvent event) {
TreeItem<String> rootItem = treeView.getRoot();
String textFieldText;
boolean flag = false;
textFieldText = textField.getText();
searchStatus.setText("");
if (textFieldText.equals("")) {
searchStatus.setText("Please enter something to be searched");
} else {
for (int i = 0; i < 2; i++) {
for (TreeItem<String> treeItem : rootItem.getChildren().get(i).getChildren()) {
if (treeItem.getValue().contains(textFieldText)) {
treeView.getSelectionModel().select(treeItem);
searchStatus.setText("");
flag = true;
} else {
if (!flag) {
searchStatus.setText("Not found");
}
}
}
}
}
}

我想这可能是之后的一种方法

treeView.getSelectionModel().select(treeItem);

这可能会起作用。

最终找到了解决方案:

@FXML
private void searchButtonEvent(ActionEvent event) {
TreeItem<String> rootItem = treeView.getRoot();
String textFieldText;
boolean flag = false;
int count = 0;
textFieldText = textField.getText();
searchStatus.setText("");
if (textFieldText.equals("")) {
searchStatus.setText("Please enter something to be searched");
} else {
for (int i = 0; i < 3; i++) {
for (TreeItem<String> treeItem : rootItem.getChildren().get(i).getChildren()) {
count++;
if (treeItem.getValue().contains(textFieldText)) {
treeView.getSelectionModel().select(treeItem);
treeView.scrollTo(count);
searchStatus.setText("");
flag = true;
} else {
if (!flag) {
searchStatus.setText("Not found");
}
}
}
}
}
}

方法在名为scrollTo(int(的TreeView类中,所以我只需要为该添加一个计数器

相关内容

  • 没有找到相关文章

最新更新