首页>代码>JavaSE Swing写的文件管理器>/wwbabaFileExplorer2020/src/WwBabaFileExplorer2020.java

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.filechooser.FileSystemView;
import javax.swing.table.DefaultTableModel;

import tools.DateTools;
import tools.FileTools;

public class WwBabaFileExplorer2020 extends JFrame{
	public static void main(String s[]) {
		WwBabaFileExplorer2020 ww = new WwBabaFileExplorer2020();
	}
	public WwBabaFileExplorer2020() {
		init0();
		init1();
		init2();
		this.setVisible(true);
	}
	Toolkit tks = Toolkit.getDefaultToolkit();
	JPanel mainPanel1=new JPanel();
	JPanel leftPanel1 =new JPanel();
	JPanel centerPanel1=new JPanel() ;
	final JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
	public void init0() {
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setSize(800, 600);
		this.getContentPane().add(mainPanel1);
		
		this.setTitle("wwbaba资源管理器");
		this.setLocation((int)(tks.getScreenSize().getWidth()-800)/2, (int)(tks.getScreenSize().getHeight()-600)/2);
		mainPanel1.setLayout(new BorderLayout());
		splitPane.setBackground(Color.WHITE);
		splitPane.setDividerSize(6);
		mainPanel1.add(splitPane,BorderLayout.CENTER);
		splitPane.add(leftPanel1);
		splitPane.add(centerPanel1);
		leftPanel1.setPreferredSize(new Dimension(240,200));
		leftPanel1.setBackground(Color.WHITE);
		centerPanel1.setBackground(Color.WHITE);
		
		leftPanel1.setLayout(new BoxLayout(leftPanel1, BoxLayout.Y_AXIS));
		 
	}
	private JComboBox cmbDisks;
	private JTable listDirTable;
	Object[][] leftCellData = {};
	String[] leftColumnNames = {"目录名(.当前..[回到上级]上级)"};
	JTextArea jtxInfo=  new JTextArea( );
	DefaultTableModel model;
	public void init1() {
		cmbDisks = new JComboBox();
		 
		File fs[] = FileTools.getDiskRoot();
		for(File f:fs) {
			cmbDisks.addItem(f.getPath());
		}
		//cmbDisks.setPreferredSize(new Dimension(150,30));
		leftPanel1.add(cmbDisks);
		
		
		cmbDisks.addItemListener(new ItemListener() {

			@Override
			public void itemStateChanged(ItemEvent arg0) {
				// TODO Auto-generated method stub
				oldDir = cmbDisks.getSelectedItem().toString();
				initLeftCell(cmbDisks.getSelectedItem().toString());
			}
			
		});
		
		
		model = new DefaultTableModel(leftCellData, leftColumnNames) {
		public boolean isCellEditable(int row, int column) {return false;}};
		listDirTable = new JTable(model);
		listDirTable.setFont(new Font("华文宋体",Font.BOLD,14));
		
		JScrollPane jst1 = new JScrollPane();
		jst1.add(listDirTable);
		
		jst1.setPreferredSize(new Dimension(150,300));
		leftPanel1.add(jst1);
		listDirTable.setRowHeight(30);
		jst1.setViewportView(listDirTable);
 
		leftPanel1.add(jtxInfo);
		jtxInfo.setWrapStyleWord(true);
		
		initLeftCell(oldDir);
		
		listDirTable.addMouseListener(new MouseListener() {

			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				if (e.getClickCount() == 1) {
		            int row = listDirTable.getSelectedRow();
		            String s1 = model.getValueAt(row, 0).toString();
		            //oldDir = nowDir;
		            //nowDir = s1;
		            System.out.println("b:" + s1);
		        }
				if (e.getClickCount() == 2) {
		            int row = listDirTable.getSelectedRow();
		            String s1 = model.getValueAt(row, 0).toString();
		            oldDir = nowDir;
		            nowDir = s1;
		            if("..[回到上级]".equals(s1)) {
		            	
		            	int x = oldDir.lastIndexOf("\\");
		            	if (x>0) {
		            	String s = oldDir.substring(0,x) ;
		            	System.out.println("d-..[回到上级]:" + s);
		            	nowDir = s;
		            	}else {
		            		nowDir = cmbDisks.getSelectedItem().toString();
		            	}
		            }else {
		            	
		            }
		            initLeftCell(nowDir);
		            initCell2(nowDir);
		            System.out.println("d-now:" + nowDir);
		            
		        }

			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
		});
		
	}
	private String oldDir="c:\\";
	private String nowDir="c:\\";
	public void  initLeftCell(String path) {
		File fs = new File(path);
		if (fs.isFile()) return ;
		if (".".equals(path)) {
			return ;
		}

		
		DefaultTableModel tableModel = (DefaultTableModel) listDirTable.getModel();
		for(int   i =tableModel.getRowCount()-1 ;i>=0;i--) {
			tableModel.removeRow(i);
		}
		File fa[] = fs.listFiles();
		tableModel.addRow(new Object[] {"..[回到上级]"});
		tableModel.addRow(new Object[] {"."});
		for(File f:fa) {
			if (f.isDirectory()) {
				String pp= f.getAbsolutePath();
				tableModel.addRow(new Object[] {pp});
			}
		}
	}
	Object[][] leftCellData2 = {};
	String[] leftColumnNames2 = {"类型","名称","大小","日期"};
	JTable listDirTable2;
	DefaultTableModel model2;
	public void init2() {
		model2 = new DefaultTableModel(leftCellData2, leftColumnNames2) {
			public boolean isCellEditable(int row, int column) {return false;}};
			listDirTable2 = new JTable(model2);
			listDirTable.setFont(new Font("华文宋体",Font.BOLD,14));
			
			JScrollPane jst2 = new JScrollPane();
			jst2.add(listDirTable2);
			
			centerPanel1.setLayout(new BorderLayout());
			centerPanel1.add(jst2,BorderLayout.CENTER);
			listDirTable2.setRowHeight(30);
			jst2.setViewportView(listDirTable2);
			initCell2(oldDir);
			listDirTable2.getColumnModel().getColumn(0).setPreferredWidth(80);
			listDirTable2.getColumnModel().getColumn(1).setPreferredWidth(220);
	}
	
	public void  initCell2(String path) {
		File fs = new File(path);
		if (fs.isFile()) return ;
		if (".".equals(path)) {
			return ;
		}

		
		DefaultTableModel tableModel2 = (DefaultTableModel) listDirTable2.getModel();
		for(int   i =tableModel2.getRowCount()-1 ;i>=0;i--) {
			tableModel2.removeRow(i);
		}
		File fa[] = fs.listFiles();

		List<Object[]> lf1 = new ArrayList<Object[]>();
		List<Object[]> lf2 = new ArrayList<Object[]>();
		
		for(File f:fa) {
			if (f.isDirectory()) {
				String pp= f.getAbsolutePath();
				Object ox[] = {"[目录]",pp,"",""};
				lf1.add(ox);
				
			
			}else {
				String pp= f.getAbsolutePath();
				File fp = new File(pp);
				Object ox[] = {"[文件]",pp,fp.length(),DateTools.dateToStr(new Date(fp.lastModified()))};
				lf2.add(ox);
				
			}
		}
		for(Object[] o: lf1) {
			tableModel2.addRow(o);
		}
		for(Object[] o: lf2) {
			tableModel2.addRow(o);
		}
		

	} 
}
最近下载更多
139465  LV12 2023年3月29日
dongyf  LV7 2021年10月7日
jjkknn  LV3 2021年7月21日
段朝洪  LV15 2020年11月21日
lyws1986  LV17 2020年10月23日
pxqtsht  LV16 2020年9月10日
fzlzxc  LV10 2020年8月11日
1602177575  LV14 2020年8月11日
最代码官方  LV168 2020年8月9日
最近浏览更多
dddding yang  LV6 9月15日
木子520  LV12 5月23日
vitos5n  LV10 2024年12月9日
dearxo2014  LV1 2024年11月9日
PSSDZH  LV3 2024年6月14日
welcome丶  LV9 2024年4月26日
香菇肉饼汤  LV8 2024年4月21日
小王wang  LV10 2024年2月29日
houxianzheng 2024年2月19日
暂无贡献等级
氟西汀来救你  LV2 2024年1月10日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友