文件浏览器中的JavaFX TableView双选

时间:2014-03-03 20:10:45

标签: java javafx

我目前正在使用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。

0 个答案:

没有答案