Javafx簡單實現(xiàn)【我的電腦資源管理器】效果
更新時間:2015年09月21日 12:10:06 作者:21paradox
這篇文章主要介紹了Javafx簡單實現(xiàn)【我的電腦資源管理器】效果,涉及Javafx操作系統(tǒng)文件模擬資源管理器的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了Javafx簡單實現(xiàn)【我的電腦資源管理器】效果。分享給大家供大家參考。具體如下:
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<FileDetail> data = FXCollections.observableArrayList(); public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Javafx 實現(xiàn)\"我的電腦\"資源管理器"); TreeItem<File> rootItem = new TreeItem<>(new File(System.getenv("COMPUTERNAME"))); for (File file : File.listRoots()) { FileTreeItem rootsitem = new FileTreeItem(file); rootItem.getChildren().add(rootsitem); } TreeView<File> tree = new TreeView<File>(rootItem); HBox root = new HBox(); TableView<FileDetail> tableView = new TableView<>(data); TableColumn<FileDetail, String> firstColumn = new TableColumn<>("文件"); firstColumn.setCellValueFactory(new PropertyValueFactory<FileDetail, String>("FileName")); firstColumn.setPrefWidth(120); TableColumn<FileDetail, String> secondColumn = new TableColumn<>("類型"); secondColumn.setCellValueFactory(new PropertyValueFactory<FileDetail, String>("type")); secondColumn.setPrefWidth(120); TableColumn<FileDetail, String> thirdColumn = new TableColumn<>("最后修改"); thirdColumn.setCellValueFactory(new PropertyValueFactory<FileDetail, String>("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<TreeItem<File>>() { @Override public void changed(ObservableValue<? extends TreeItem<File>> observable, TreeItem<File> oldValue, TreeItem<File> newValue) { ObservableList<TreeItem<File>> treelist = newValue.getChildren(); ObservableList<FileDetail> tablelist = FXCollections.observableArrayList(); for (TreeItem<File> 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; } }
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<File> { private boolean isLeaf; private boolean isFirstTimeChildren = true; private boolean isFirstTimeLeaf = true; public FileTreeItem(File file) { super(file); } @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 && f.isDirectory()) { File[] files = f.listFiles(); if (files != null) { ObservableList<TreeItem<File>> children = FXCollections.observableArrayList(); for (File childFile : files) { children.add(new FileTreeItem (childFile)); } return children; } } return FXCollections.emptyObservableList(); } }
4. 運行效果截圖:
希望本文所述對大家的java程序設(shè)計有所幫助。
您可能感興趣的文章:
相關(guān)文章
MyBatis中XML 映射文件中常見的標(biāo)簽說明
這篇文章主要介紹了MyBatis中XML 映射文件中常見的標(biāo)簽說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07spring boot @ResponseBody轉(zhuǎn)換JSON 時 Date 類型處理方法【兩種方法】
這篇文章主要介紹了spring boot @ResponseBody轉(zhuǎn)換JSON 時 Date 類型處理方法,主要給大家介紹Jackson和FastJson兩種方式,每一種方法給大家介紹的都非常詳細,需要的朋友可以參考下2018-08-08解決IDEA2020.2插件lombok報錯問題(親測有效)
這篇文章主要介紹了解決IDEA2020.2插件lombok報錯問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08