我目前正在使用filebrowser开发一个程序。我使用tableView实现了它,它显示了当前文件夹中的内容。
如果我有一个包含1,2和3的文件夹A.如果我点击A.它将打开A而也 1,因为第一项仍然被选中。
我的想法是:A获得焦点然后被选中,它会改变视图,焦点仍然是第一个被选中的项目。
eventListener跟踪选择更改:
table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<FileItem>() {
@Override
public void changed(ObservableValue<? extends FileItem> observable,
FileItem oldValue, FileItem newValue) {
// newValue may be null when the list is cleared (in that case do not try to download the document)
if (table.getSelectionModel().getSelectedItem() != null ) {
Path path = Paths.get(newValue.getFullPath());
if (newValue.isDirectory()) {
showDirectory(path);
}
和showfolder():
public void showDirectory(Path path){
try{
DirectoryStream<Path> dir = Files.newDirectoryStream(path);
table.getSelectionModel().clearSelection();
if(path.getRoot().equals(path)){
parentButton.setVisible(false);
}
else{
parentButton.setVisible(true);
}
fileList.clear();
for(Path file:dir){
FileItem fileItem = new FileItem(file);
fileList.add(fileItem);
}
currentDirectory = path.toString();
pathLabel.setText(currentDirectory);
}
catch (IOException e1) {
e1.printStackTrace();
}
}
我已经尝试table.getSelectionModel().clearSelection()
提前感谢您的回复。
Alexis Benoist。