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);
}
}
}
最近下载更多
最近浏览更多
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日

