mysql 资源管理器_资源管理器2

package org.accp.explor; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce

package org.accp.explor;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.sql.Date;

import javax.swing.*;

import javax.swing.event.TreeSelectionEvent;

import javax.swing.event.TreeSelectionListener;

import javax.swing.table.AbstractTableModel;

import javax.swing.table.DefaultTableModel;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.tree.TreePath;

public class Test1 extends DefaultMutableTreeNode {

private static final long serialVersionUID = 6999685634761062308L;

private class MyFile {//这个内部类的用处在于在JTree节点的select发生时,对所选文件进行格式转化

private File file;

public MyFile(File file) {

this.file = file;

}

public String toString() {

String name = file.getName().trim();

if (name.length() == 0)

name = file.getAbsolutePath().trim();

return name;

}

}

DefaultMutableTreeNode treeRoot;

DefaultTableModel tableModel;

JTable table;

DefaultMutableTreeNode parent;

Object[][] list = { {} };

public void treeMake() throws UnknownHostException { // 添加机器码&&构造界面

InetAddress local = InetAddress.getLocalHost();

treeRoot = new DefaultMutableTreeNode(local.getHostName());

final JTree tree = new JTree(treeRoot);

JScrollPane scrolltree = new JScrollPane(tree);

scrolltree.setPreferredSize(new Dimension(200, 300));

String[] row = { "文件", "类型", "最后修改日期" };

tableModel = new DefaultTableModel(list, row);

table = new JTable(tableModel);

JScrollPane scrollTable = new JScrollPane(table);

scrollTable.setPreferredSize(new Dimension(500, 500));

MenuBar meb=new MenuBar();

Menu menuFile=new Menu("文件(F)");

Menu menuEdit=new Menu("编辑(E)");

Menu menuLook=new Menu("查看(V)");

meb.add(menuFile);

MenuItem miFile=new MenuItem("打开");

menuFile.add(miFile);

meb.add(menuEdit);

MenuItem miEdit=new MenuItem("复制");

menuEdit.add(miEdit);

meb.add(menuLook);

MenuItem miLook=new MenuItem("工具栏");

menuLook.add(miLook);

JFrame jf = new JFrame();

jf.add(BorderLayout.WEST, scrolltree);

jf.add(BorderLayout.CENTER, scrollTable);

jf.setSize(600, 600);

jf.setVisible(true);

jf.setMenuBar(meb);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// 添加电脑本地硬盘

for (char i = 'c'; i < 'z'; i++) {

String path = i + ":/";

if (((new File(path)).exists())) {

DefaultMutableTreeNode diskNode = new DefaultMutableTreeNode(

new MyFile(new File(path)));

treeRoot.add(diskNode);

readfiles(new File(path), diskNode);

}

}

tree.addTreeSelectionListener(new TreeSelectionListener() {//添加listener

public void valueChanged(TreeSelectionEvent arg0) {

// TODO 自动生成方法存根

TreePath path = tree.getSelectionPath();

if (path == null)

return;

DefaultMutableTreeNode selectnode = (DefaultMutableTreeNode) path

.getLastPathComponent();

if (!selectnode.isLeaf()) {

// 这里加上类型判断

if (!(selectnode.getUserObject() instanceof MyFile)) {

return;

}

File file_select = ((MyFile) selectnode.getUserObject()).file;

// 读取文件夹下文件添加下层节点

readfiles(file_select, selectnode);

DefaultMutableTreeNode firstchild = (DefaultMutableTreeNode) selectnode

.getFirstChild();

selectnode.remove(firstchild);

tableModel.setRowCount(0);

File[] fileList = file_select.listFiles();

list = fu(fileList);

for (int i = 0; i < fileList.length; i++) {

tableModel.addRow(list[i]);

}

}

else {

tableModel.setRowCount(0);

try {

File file_select = ((MyFile) selectnode.getUserObject()).file;

String sizeFile=size(file_select);

Object re[][]={{file_select.getName(),sizeFile,lastTime(file_select)}};

list=re;

tableModel.addRow(list[0]);

} catch (IOException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

}

}

});

}

public void readfiles(File file, DefaultMutableTreeNode node) {//读取所选节点,获取子节点

File list[] = file.listFiles();

if (list == null)

return;

for (int i = 0; i < list.length; i++) {

File file_inlist = list[i];

// String filename = file_inlist.getName();

if (file_inlist.isDirectory()) {

parent = new DefaultMutableTreeNode(new MyFile(file_inlist));

// 添加空白文件夹节点 使子节点显示为文件夹

File stubadd = null;

DefaultMutableTreeNode stub = new DefaultMutableTreeNode(

stubadd);

parent.add(stub);

node.add(parent);

} else {

DefaultMutableTreeNode son = new DefaultMutableTreeNode(

new MyFile(file_inlist));

node.add(son);

}

}

}

public String size(File file) throws IOException {//读取文件的大小

FileInputStream fileLength = new FileInputStream(file);

String sizefile = fileLength.available() + "字节";

return sizefile;

}

public Date lastTime(File file) {

long lastModified = file.lastModified();// 取得最后一次修改的时间

Date date = new Date(lastModified);

date.setTime(lastModified);

return date;

}

public Object[][] fu(File[] file) {

Object[][] m = new Object[file.length][3];

for (int i = 0; i < file.length; i++) {

m[i][0] = file[i].getName();

try {

// 这里有问题,如果是目录,怎么取大小?所以要用if

// m[i][1] = size(file[i]);

if (file[i].isDirectory()) {

m[i][1] = "目录";

} else {

m[i][1] = size(file[i]);

}

} catch (IOException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

m[i][2] = lastTime(file[i]);

}

return m;

}

public int getColumnCount() {

// TODO 自动生成方法存根

return 3;

}

public int getRowCount(File[] file) {

// TODO 自动生成方法存根

return file.length;

}

public Object getValueAt(int row, int col) {

// TODO 自动生成方法存根

return list[row][col];

}

public static void main(String[] args) {

// TODO Auto-generated method

Test1 disk = new Test1();

try {

disk.treeMake();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值