如何使用 JavaFX 从树视图中的绝对路径获取文件夹或文件名?
How to fetch the folder or files names from an absolute path in a tree View using JavaFX?
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);`
所以这给了我这样的输出
C:\programfiles ->C:\programfiles\java ->C:\programfiles\python
我想要的只是删除这些绝对路径并只是游戏 file/folder 名称。我知道使用 getName 会有所帮助,但如何在我的代码中实现 getName()?
您可以将通用类型从 File 更改为 String 并仅使用文件名:
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);
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);`
所以这给了我这样的输出
C:\programfiles ->C:\programfiles\java ->C:\programfiles\python
我想要的只是删除这些绝对路径并只是游戏 file/folder 名称。我知道使用 getName 会有所帮助,但如何在我的代码中实现 getName()?
您可以将通用类型从 File 更改为 String 并仅使用文件名:
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);