Javafx简单实现【我的电脑资源管理器】效果

网友投稿 270 2023-07-29


Javafx简单实现【我的电脑资源管理器】效果

本文实例讲述了javafx简单实现【我的电脑资源管理器】效果。分享给大家供大家参考。具体如下:

1. java代码:

package ttt;

import java.io.File;

import javafx.application.Application;

import javafx.beans.value.ChangeListener;

import javafx.beans.value.ObservableValue;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.scene.Scene;

import javafx.scene.control.TableColumn;

import javafx.scene.control.TableView;

import javafx.scene.control.TreeItem;

import javafx.scene.layout.BorderPane;

import javafx.scene.layout.HBox;

import javafx.scene.layout.Priority;

import javafx.stage.Stage;

import javafx.scene.control.TreeView;

import javafx.scene.control.cell.PropertyValueFactory;

public class TreeViews extends Application {

public static ObservableList data = FXCollections.observableArrayList();

public static void main(String[] args) {

launch(args);

}

@Override

public void start(Stage primaryStage) {

primaryStage.setTitle("Javafx 实现\"我的电脑\"资源管理器");

TreeItem rootItem = new TreeItem<>(new File(System.getenv("COMPUTERNAME")));

for (File file : File.listRoots()) {

FileTreeItem rootsitem = new FileTreeItem(file);

rootItem.getChildren().add(rootsitem);

}

TreeView tree = new TreeView(rootItem);

HBox root = new HBox();

TableView tableView = new TableView<>(data);

TableColumn firstColumn = new TableColumn<>("文件");

firstColumn.setCellValueFactory(new PropertyValueFactory("FileName"));

firstColumn.setPrefWidth(120);

TableColumn secondColumn = new TableColumn<>("类型");

secondColumn.setCellValueFactory(new PropertyValueFactory("type"));

secondColumn.setPrefWidth(120);

TableColumn thirdColumn = new TableColumn<>("最后修改");

thirdColumn.setCellValueFactory(new PropertyValueFactory("LastModified"));

thirdColumn.setPrefWidth(200);

tableView.getColumns().setAll(firstColumn, secondColumn, thirdColumn);

HBox.setHgrow(tree, Priority.ALWAYS);

HBox.setHgrow(tableView, Priority.ALWAYS);

root.getChildren().addAll(tree,tableView);

tree.getSelectionModel().selectedItemProperty().addListener(new ChangeListener>() {

@Override

public void changed(ObservableValue extends TreeItem> observable, TreeItem oldValue,

TreeItem newValue) {

ObservableList> treelist = newValue.getChildren();

ObservableList tablelist = FXCollections.observableArrayList();

for (TreeItem item : treelist) {

FileDetail filedetail = new FileDetail(item.getValue());

tablelist.add(filedetail);

}

data.setAll(tablelist);

}

});

primaryStage.setScene(new Scene(root));

primaryStage.setHeight(600);

primaryStage.show();

}

}

2. java代码:

package ttt;

import java.io.File;

import java.text.SimpleDateFormat;

import java.util.Date;

public class FileDetail {

private String FileName;

private String LastModified;

private boolean isFile;

private boolean isFolder;

private boolean exists;

private String type;

private long length;

private SimpleDateFormat fmt;

public FileDetail(File file) {

isFile = file.isFile();

isFolder = file.isDirectory();

exists = file.exists();

if (exists) {

this.FileName = file.getName();

fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm");

Date date = new Date(file.lastModified());

this.LastModified = fmt.format(date);

this.length = file.length();

if (isFolder) {

this.type = "Folder";

} else

this.type = String.valueOf(this.length / (long) 1024) + "KB";

}

}

public String getFileName() {

return FileName;

}

public void setFileName(String fileName) {

FileName = fileName;

}

public String getLastModified() {

return LastModified;

}

public void setLastModified(String lastModified) {

LastModified = lastModified;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public long getLength() {

return length;

}

public void setLength(long length) {

this.length = length;

}http://

}

3. java代码:

package ttt;

import java.io.File;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.scene.control.TreeItem;

public class FileTreeItem extends TreeItem {

private boolean isLeaf;

private boolean isFirstTimeChildren = true;

private boolean isFirstTimeLeaf = true;

public FileTreeItem(File file) {

super(file);

}

@Override

public ObservableList> 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> buildChildren(TreeItem TreeItem) {

File f = TreeItem.getValue();

if (f != null && f.isDirectory()) {

File[] files = f.listFiles();

if (files != null) {

ObservableList> children = FXCollections.observableArrayList();

for (File childFile : files) {

children.add(new FileTreeItem (childFile));

}

return children;

}

}

return FXCollections.emptyObservableList();

}

}

4. 运行效果截图:

希望本文所述对大家的java程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java 连接sql server2008数据库配置
下一篇:JAVA中 Spring定时器的两种实现方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~