📄 jframetest.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 + -