⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jframetest.java

📁 可以浏览磁盘上的所有的目录和文件
💻 JAVA
字号:

import java.awt.BorderLayout;
import java.awt.Container;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
;


/*
 * Created on 2005-9-1
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author yang
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
class files {
	
	String filename;
	String filesize;
	String fileType="文本类型";
	String fileTime;
	String filePath;
	String [][] cells;
	
	//构造器
	files(List filelist,int size){
		cells=new String[filelist.size()][size];
		
		for(int i=0;i<filelist.size();i++){	
			
			File file=(File)filelist.get(i);												
			filesize=file.length()+"";
			filename=file.getName();
			fileTime=new Date(file.lastModified()).toLocaleString();
			filePath=file.getPath();
			
			cells[i][0]=filename;
			cells[i][1]=filesize;
			cells[i][2]=fileType;
			cells[i][3]=fileTime;
			cells[i][4]=filePath;
			
		}			
	}
	
	public String[][] getcells(){
		return this.cells;
	}
	
}
class InverstmentTableModel extends AbstractTableModel{

	String [] col={"文件名","文件大小","文件类型","修改日期","文件路径"}; 
	String[][] fileCell;
	int length;
	InverstmentTableModel(List filelist){
		length=filelist.size();
		files file=new files(filelist,col.length);
		fileCell=file.getcells();
	}
	/* (non-Javadoc)
	 * @see javax.swing.table.TableModel#getColumnCount()
	 */
	public int getColumnCount() {
		// TODO Auto-generated method stub
		return col.length;
	}

	/* (non-Javadoc)
	 * @see javax.swing.table.TableModel#getRowCount()
	 */
	public int getRowCount() {
		// TODO Auto-generated method stub
		return length ;
	}

	public String getColumnName(int c){
		return col[c];
	}
	
	/* (non-Javadoc)
	 * @see javax.swing.table.TableModel#getValueAt(int, int)
	 */
	public Object getValueAt(int r, int c) {
		// TODO Auto-generated method stub
		return fileCell[r][c];
	}
	
	
}

class fileNode {

	protected String m_name;
	private String path;

	public fileNode( String name) {
		
		m_name = name;
	}

	public String getName() {
		return m_name;
	}

	public String toString() {
		return m_name;
	}

	/**
	 * @return Returns the path.
	 */
	public String getPath() {
		return path;
	}
	/**
	 * @param path The path to set.
	 */
	public void setPath(String path) {
		this.path = path;
	}
}

 class treeListener implements TreeSelectionListener{
	
	/* (non-Javadoc)
	 * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
	 */
	public void valueChanged(TreeSelectionEvent ev) {
		// TODO Auto-generated method stub
		JTree tree=(JTree)ev.getSource();
		TreePath path=tree.getSelectionPath();
		if(path==null) return ;
		DefaultMutableTreeNode selectNode=(DefaultMutableTreeNode)path.getLastPathComponent();
		if(selectNode.isLeaf()){
			JFrameTest.frame.paserFilePath(selectNode);
			JFrameTest.frame.repaint();
		}
	}
}

public class JFrameTest extends JFrame {

	JPanel rightpanel=new JPanel();
	
	JTable table=new JTable(); 
	
	static JFrameTest frame=null;
	
	JTree tree = null;

	JSplitPane split = new JSplitPane();

	protected DefaultTreeModel m_model = null;

	List fileList=new ArrayList();

	int DividerSize = 5;

	JFrameTest() {

		
		super("文件浏览器");
		
		frame=this;
		
		Container mainPanel = this.getContentPane();

		fileNode root = new fileNode( "D:");
		root.setPath("D:"+"\\");
		DefaultMutableTreeNode top = new DefaultMutableTreeNode(root);
		
		//加入节点到树
		paserFilePath(top);	

		m_model = new DefaultTreeModel(top);
		tree = new JTree(m_model);
		tree.addTreeSelectionListener(new treeListener());
		
		
		split.setLeftComponent(tree);
		rightpanel.setLayout(new BorderLayout());
		JScrollPane s = new JScrollPane(table);
		rightpanel.add(s);
	
		split.setRightComponent(rightpanel);
		split.setDividerSize(DividerSize);
		split.setDividerLocation(200);

	
		mainPanel.add(split);

		this.setExtendedState(JFrame.MAXIMIZED_BOTH);
		this.setVisible(true);
	
	}

	//对路径进行解析
	public void paserFilePath(DefaultMutableTreeNode root){
		
		fileNode top=(fileNode)root.getUserObject();
		String fileName =top.getPath();		
		
		File file = new File(fileName);
		
		String[]  str=file.list();
		DefaultMutableTreeNode  node =null;
		
		for(int i=0;i<str.length;i++){
			File f=new File(fileName,str[i]);
			if(f.isDirectory()){
				top = new fileNode(str[i]);
				top.setPath(f.getAbsolutePath());
				node = new DefaultMutableTreeNode(top);
				root.add(node);
			}
			if(f.isFile()){
				fileList.add(f);
			}
		}
		if (fileList!=null){
			TableModel model=new InverstmentTableModel(fileList);
			table.setModel(model);
		}	
		fileList.clear();

		
	}
	
	public static void main(String[] args) {
		JFrameTest frame1 = new JFrameTest();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -