itemlist.java:::
public class itemlist {
public TreeItem<File> createNode(final File f) {
return new TreeItem<File>(f) {
private boolean isLeaf;
private boolean isFirstTimeChildren = true;
private boolean isFirstTimeLeaf = true;`
@Override
public ObservableList<TreeItem<File>> getChildren() {
if (isFirstTimeChildren) {
isFirstTimeChildren = false;
super.getChildren().setAll(buildChildren(this));
}
return super.getChildren();
}
@Override
public boolean isLeaf() {
if (isFirstTimeLeaf) {
isFirstTimeLeaf = false;
File f = (File) getValue();
isLeaf = f.isFile();
}
return isLeaf;
}
private ObservableList<TreeItem<File>> buildChildren(
TreeItem<File> TreeItem) {
File f = TreeItem.getValue();
if (f == null) {
return FXCollections.emptyObservableList();
}
if (f.isFile()) {
return FXCollections.emptyObservableList();
}
File[] files = f.listFiles();
// String allfiles= files.toString();
//allfiles.
if (files != null) {
ObservableList<TreeItem<File>> children = FXCollections
.observableArrayList();
for (File childFile : files) {
children.add(createNode(childFile));
}
return children;
}
return FXCollections.emptyObservableList();
}
controller.java::::
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
itemlist obj=new itemlist();
TreeItem<File> rt =obj.createNode(new File("c:\\"));
fileView.setRoot(rt);`
So this gives me an output like
C:\\programfiles ->C:\\programfiles\java ->C:\\programfiles\python
All I want is to remove these absolute path & just game the file/folder name. I understand using getName would help that but how do I implement getName() in my code?
You can change generic type from File to String and use only the file name:
class ItemList {
public TreeItem<String> createNode(final File f) {
return new TreeItem<String>(f.getName()) {
private boolean isLeaf;
private boolean isFirstTimeChildren = true;
private boolean isFirstTimeLeaf = true;
@Override
public ObservableList<TreeItem<String>> getChildren() {
if (isFirstTimeChildren) {
isFirstTimeChildren = false;
super.getChildren().setAll(buildChildren(f));
}
return super.getChildren();
}
@Override
public boolean isLeaf() {
if (isFirstTimeLeaf) {
isFirstTimeLeaf = false;
isLeaf = f.isFile();
}
return isLeaf;
}
private ObservableList<TreeItem<String>> buildChildren(
File f) {
if (f == null) {
return FXCollections.emptyObservableList();
}
if (f.isFile()) {
return FXCollections.emptyObservableList();
}
File[] files = f.listFiles();
if (files != null) {
ObservableList<TreeItem<String>> children = FXCollections
.observableArrayList();
for (File childFile : files) {
children.add(createNode(childFile));
}
return children;
}
return FXCollections.emptyObservableList();
}
};
}
}
ItemList obj = new ItemList();
TreeItem<String> rt = obj.createNode(new File("/"));
TreeView<String> treeView = new TreeView<>(rt);