gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Javafx简单实现【我的电脑资源管理器】效果由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

1. java代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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 实现\"我的电脑\"资源管理器" );
     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代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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. 运行效果截图:

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

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

最后此篇关于Javafx简单实现【我的电脑资源管理器】效果的文章就讲到这里了,如果你想了解更多关于Javafx简单实现【我的电脑资源管理器】效果的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com