📄 wenjian.java
字号:
package file;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.text.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Rectangle;
public class wenjian extends JFrame implements ActionListener,ItemListener
{
int aa = 1500;
int num = 0;
long[] time =new long[aa];
String[] n = new String[aa];
String[] way = new String[aa];
long[] large = new long[aa];
String[]leixing=new String[aa];
int rowI=0;
int loop=0;
JComboBox jComboBox1 = new JComboBox();///////控件定义
JLabel jLabel1 = new JLabel();
Object[] header={"名字","位置","大小","类型","创建时间"};
DefaultTableModel model = new DefaultTableModel(header, 500);
//JTable jtb = new JTable(500,5);/////////////定义表
JTable jtb=new JTB().jj();
JButton jButton1 = new JButton();
JButton jButton6 = new JButton();
JPopupMenu popup = new JPopupMenu();///////////右键菜单的定义
JMenuItem item1 = new JMenuItem("打开");
JMenuItem item2 = new JMenuItem("复制到...");
JMenuItem item3 = new JMenuItem("删除");
JMenuItem item4 = new JMenuItem("重命名");
JToggleButton jToggleButton1 = new JToggleButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
public wenjian(String gg)//////////////////构造函数
{
super(gg);
this.setSize(1020,735);
try
{
jbInit();//////////调用jbInit()函数
}
catch (Exception ex)
{
ex.printStackTrace();
}
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)///////////主函数
{
wenjian wenjian =new wenjian("文件管理器 作者:04级计算机4班 陈子凌");
}
private void jbInit() throws Exception//////////////////初始化函数
{
this.getContentPane().setLayout(null);
this.getContentPane().setBackground(Color.white);
jComboBox1.addActionListener(new wenjian_jComboBox1_actionAdapter(this));//////注册监听
jButton1.setBounds(new Rectangle(1, 52, 129, 23));
jButton1.setText("返回上层目录");
jButton1.addActionListener(new wenjian_jButton1_actionAdapter(this));
jButton6.addActionListener(new wenjian_jButton6_actionAdapter(this));
jButton6.setBounds(new Rectangle(924, 6, 81, 23));
jButton6.setText("转到");
jComboBox1.setBounds(new Rectangle(40, 6, 880, 23));//////////jCombox
jComboBox1.setEditable(true);
jLabel1.setText("地址");
jLabel1.setBounds(new Rectangle(5, 10, 42, 15));
item1.addActionListener(this);//右键菜单的注册监听
item2.addActionListener(this);
item3.addActionListener(this);
item4.addActionListener(this);
File[] roots = File.listRoots();
for (int i = 0; i < roots.length; i++)
{
jComboBox1.addItem(roots[i].getPath());
}
//String str = (String) jComboBox1.getSelectedItem();
setTable();///////显示表
jtb.addMouseListener(new MouseAdapter()////////////////////////表的注册监听
{
public void mouseClicked(MouseEvent e)
{
rowI = jtb.rowAtPoint(e.getPoint());
if (e.getButton() == MouseEvent.BUTTON3)//////////右键菜单
{
popup.add(item1);
popup.add(item2);
popup.add(item3);
popup.add(item4);
popup.show(jtb,e.getX(),e.getY());
}
if(e.getClickCount()==2)//////////////////////////双击事件
{
rowI = jtb.rowAtPoint(e.getPoint());
if(jtb.getValueAt(rowI, 3).equals(null))
{
javax.swing.JOptionPane.showMessageDialog(null, "没有内容","错误",javax.swing.JOptionPane.ERROR_MESSAGE);
}
if(jtb.getValueAt(rowI, 3).equals("文件夹"))
{
jComboBox1.addItem(jtb.getValueAt(rowI, 1));
jComboBox1.setSelectedItem(jtb.getValueAt(rowI, 1));
setTable(); ///////显示表
}
else
{
String s1 = "cmd /E:ON /c start ";
String s2 =(String)jtb.getValueAt(rowI, 1);
try {
Process process = Runtime.getRuntime().exec(s1 +
s2);
} catch (Exception ex)
{
ex.printStackTrace();
}
}
}
if(e.getClickCount()==1)
{
int rowI = jtb.rowAtPoint(e.getPoint());
if(jtb.getValueAt(rowI, 3).equals(null))
{
javax.swing.JOptionPane.showMessageDialog(null, "没有内容","错误",javax.swing.JOptionPane.ERROR_MESSAGE);
}
}
}
}
);
JScrollPane jScrollPane1 = new JScrollPane(jtb);//////////////////////////////
jScrollPane1.setBounds(new Rectangle(3, 81, 1010, 600));
jToggleButton1.setText("刷新");
jToggleButton1.setBounds(new Rectangle(142, 52, 117, 23));
jToggleButton1.addActionListener(new
wenjian_jToggleButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(276, 52, 163, 23));
jButton2.setText("新建文件夹");
jButton2.addActionListener(new wenjian_jButton2_actionAdapter(this));
jButton3.setBounds(new Rectangle(472, 54, 130, 23));
jButton3.setText("新建文件");
jButton3.addActionListener(new wenjian_jButton3_actionAdapter(this));
this.getContentPane().add(jComboBox1);
this.getContentPane().add(jButton6);
this.getContentPane().add(jButton1);
this.getContentPane().add(jLabel1);
this.getContentPane().add(jScrollPane1);
this.getContentPane().add(jToggleButton1);
this.getContentPane().add(jButton2);
this.getContentPane().add(jButton3);
}
private void setTable() ////////////////表的显示
{
String str = (String) jComboBox1.getSelectedItem();
File f = new File(str);
if(f.isFile())
{
if(loop<=0)
{
String s1 = "cmd /E:ON /c start ";
String s2 =str;
try {
Process process = Runtime.getRuntime().exec(s1 +
s2);
loop++;
jComboBox1.setSelectedItem(f.getParent());
} catch (Exception ex)
{
ex.printStackTrace();
}
}
else
{
System.out.print("erro");
javax.swing.JOptionPane.showMessageDialog(null,"erro");
}
}
else {
File[] files = f.listFiles();
try {
DefaultTableModel model = new DefaultTableModel(header,
files.length); //////
jtb.setModel(model);
jtb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jtb.getColumn(header[0]).setPreferredWidth(202);
jtb.getColumn(header[1]).setPreferredWidth(202);
jtb.getColumn(header[2]).setPreferredWidth(202);
jtb.getColumn(header[3]).setPreferredWidth(202);
jtb.getColumn(header[4]).setPreferredWidth(202);
jtb.isCellEditable(0, 0);
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
leixing[i] = "文件夹";
jtb.setValueAt(leixing[i], i, 3); //////////显示类型
} else {
large[i] = files[i].length(); /////获取大小
String lar;
if (large[i] < 1024) {
lar = large[i] + "字节";
} else if (large[i] < 1024 * 1024) {
lar = large[i] / 1024 + "KB";
} else {
lar = large[i] / (1024 * 1024) + "MB";
}
leixing[i] = "文件";
jtb.setValueAt(leixing[i], i, 3); /////显示类型
jtb.setValueAt(lar, i, 2); ////显示大小
}
n[i] = files[i].getName(); ///////////////获取文件名
way[i] = files[i].getAbsolutePath(); /////获取文件路径
time[i] = files[i].lastModified(); /////获取文件修改时间
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:MM:SS");
String tsForm = formatter.format(new Date(time[i]));
jtb.setValueAt(n[i], i, 0); /////////显示文件名字
jtb.setValueAt(way[i], i, 1); ///////显示路径
jtb.setValueAt(tsForm, i, 4); //////显示修改时间
}
} catch (Exception ex) {
javax.swing.JOptionPane.showMessageDialog(null, "找不到该目录或地址的地址文件", "错误",
javax.swing.JOptionPane.
ERROR_MESSAGE);
jComboBox1.setSelectedItem("");
}
}
}
/**
* del
*/
private void del(File f)///////////////////////////////////////////////删除函数
{
if (f.isDirectory())
{
File[] flist = f.listFiles();
if (f.listFiles().length <= 0||flist==null)
{
f.delete();
}
else
{
for (int i = 0; i < flist.length; i++)
{
if (flist[i].isDirectory())
{
del(flist[i]);
}
else
{
flist[i].delete();
}
}
}
}
else
{
f.delete();
}
f.delete();
}
/**************************以下为事件按处理
*/
public void jComboBox1_actionPerformed(ActionEvent e)/////////////处理jComboBox1
{
setTable();
}
public void jButton6_actionPerformed(ActionEvent e) //////////////////////处理转到
{
loop=0;
String str = (String) jComboBox1.getSelectedItem();
if(str.equals(""))
{
javax.swing.JOptionPane.showMessageDialog(null, "请输入地址", "错误",
javax.swing.JOptionPane.
ERROR_MESSAGE);
}
}
public void jButton1_actionPerformed(ActionEvent e)////////////////////////处理返回上层目录
{
String str = (String) jComboBox1.getSelectedItem();
if (str.length() < 4) {
javax.swing.JOptionPane.showMessageDialog(null, "已经是顶层目录", "错误",
javax.swing.JOptionPane.
ERROR_MESSAGE);
} else {
File f = new File(str);
String s = f.getParent();
if (s.equals(null)) {
javax.swing.JOptionPane.showMessageDialog(null, "已经是顶层目录", "错误",
javax.swing.JOptionPane.ERROR_MESSAGE);
}
else {
jComboBox1.setSelectedItem(s);
setTable();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -