filesystem.java~473~
来自「操作系统课程设计」· JAVA~473~ 代码 · 共 866 行 · 第 1/3 页
JAVA~473~
866 行
import java.awt.BorderLayout;
import javax.swing.tree.DefaultMutableTreeNode;
import java.io.File;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.TreeNode;
import java.awt.event.MouseAdapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.tree.TreePath;
import javax.swing.tree.DefaultTreeModel;
import java.io.FileWriter;
import java.io.PrintWriter;
import javax.swing.tree.MutableTreeNode;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.*;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.JPopupMenu;
import javax.swing.JSplitPane;
import javax.swing.JMenuItem;
import javax.swing.JTable;
import javax.swing.JMenu;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import java.awt.Color;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Toolkit;
import com.borland.jbcl.layout.XYLayout;
import com.borland.jbcl.layout.*;
import javax.swing.tree.DefaultTreeCellRenderer;
import java.awt.Image;
public class FileSystem extends JFrame
{
BorderLayout borderLayout1 = new BorderLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JScrollPane jScrollPane2 = new JScrollPane();
JTree jTree1 ;
JPopupMenu jPopupMenu1 = null;
JSplitPane jSplitPane1 = new JSplitPane();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("我的电脑");//文件夹树显示的名称
DefaultMutableTreeNode dmtn1 = new DefaultMutableTreeNode("disk1");
DefaultMutableTreeNode dmtn2 = new DefaultMutableTreeNode("disk2");
DefaultTreeModel model = null;
DefaultTreeCellRenderer renderer = null;
/*ImageIcon xinjian = new ImageIcon(getClass().getResource("icons\\new.png"));
ImageIcon newdir = new ImageIcon(getClass().getResource("icons\\newdir.png"));
ImageIcon newfile = new ImageIcon(getClass().getResource("icons\\newfile.png"));
ImageIcon cut = new ImageIcon(getClass().getResource("icons\\cut.png"));
ImageIcon copy = new ImageIcon(getClass().getResource("icons\\copy.png"));
ImageIcon paste = new ImageIcon(getClass().getResource("icons\\paste.png"));
ImageIcon delete = new ImageIcon(getClass().getResource("icons\\delete.png"));
ImageIcon open = new ImageIcon(getClass().getResource("icons\\open.png"));
ImageIcon execute = new ImageIcon(getClass().getResource("icons\\execute.png"));
ImageIcon set = new ImageIcon(getClass().getResource("icons\\set.png"));
ImageIcon read = new ImageIcon(getClass().getResource("icons\\readonly.png"));
ImageIcon writeable = new ImageIcon(getClass().getResource("icons\\writeable.png"));
// 设定关闭状态节点图标
ImageIcon closedIcon = new ImageIcon(getClass().getResource("icons\\fold.png"));
// 设定打开状态节点图标
ImageIcon openIcon = new ImageIcon(getClass().getResource("icons\\unfold.png"));*/
ImageIcon xinjian = new ImageIcon(getClass().getResource("icons\\new.png"));
ImageIcon newdir = new ImageIcon(getClass().getResource("icons\\newdir.png"));
ImageIcon newfile = new ImageIcon(getClass().getResource("icons\\newfile.png"));
ImageIcon cut = new ImageIcon(getClass().getResource("icons\\cut.png"));
ImageIcon copy = new ImageIcon(getClass().getResource("icons\\copy.png"));
ImageIcon paste = new ImageIcon(getClass().getResource("icons\\paste.png"));
ImageIcon delete = new ImageIcon(getClass().getResource("icons\\delete.png"));
ImageIcon open = new ImageIcon(getClass().getResource("icons\\open.png"));
ImageIcon execute = new ImageIcon(getClass().getResource("icons\\execute.png"));
ImageIcon set = new ImageIcon(getClass().getResource("icons\\set.png"));
ImageIcon read = new ImageIcon(getClass().getResource("icons\\readonly.png"));
ImageIcon writeable = new ImageIcon(getClass().getResource("icons\\writeable.png"));
// 设定关闭状态节点图标
ImageIcon closedIcon = new ImageIcon(getClass().getResource("icons\\fold.png"));
// 设定打开状态节点图标
ImageIcon openIcon = new ImageIcon(getClass().getResource("icons\\unfold.png"));
JMenuItem jMenuItem1 = new JMenuItem("文件夹",newdir);
JMenuItem jMenuItem2 = new JMenuItem("文件",newfile);
JMenuItem jMenuItem3 = new JMenuItem("剪切",cut);
JMenuItem jMenuItem4 = new JMenuItem("复制",copy);
JMenuItem jMenuItem5 = new JMenuItem("粘贴",paste);
JMenuItem jMenuItem6 = new JMenuItem("删除",delete);
JMenuItem jMenuItem7 = new JMenuItem("打开作业",open);
JMenuItem jMenuItem8 = new JMenuItem("运行作业",execute);
JMenuItem jMenuItem9 = new JMenuItem("只读",read);
JMenuItem jMenuItem10 = new JMenuItem("可写",writeable);
JTable jTable1 = new JTable();
Vector header ;
Vector data;
DefaultTableModel tableModel1;
JMenu jMenu1 = new JMenu("新建");
JMenu jMenu2 = new JMenu("设置属性");
int x = 0; int y = 0;
int x2 = 0; int y2 = 0;
String source_add = null;
String target_add = null;
String pastepath = null;
String oldpath = null;
boolean flag = false;
boolean isf = false;
DefaultMutableTreeNode cut_node = null;
String fileName = "";
String c_name = "";
String open_path ="";
boolean readonly = false;
BorderLayout borderLayout3 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JPanel jPanel3 = new JPanel();
JPanel jPanel4 = new JPanel();
XYLayout xYLayout1 = new XYLayout();
BorderLayout borderLayout2 = new BorderLayout();
BorderLayout borderLayout4 = new BorderLayout();
Memory mm = new Memory();
Processor proc = new Processor(mm);
BorderLayout borderLayout5 = new BorderLayout();
public FileSystem()
{
this.setSize(782,600);
this.setTitle("AP05062 - Team 1");
//this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("icons\\logo.png")));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();
if (frameSize.height > screenSize.height)
{
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width)
{
frameSize.width = screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception
{
jTable1.setShowVerticalLines(false);
jMenu1.setIcon(xinjian);
jMenu2.setIcon(set);
jMenuItem5.setEnabled(false);
jMenuItem1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem1_actionPerformed(e);
}
});
jMenuItem2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem2_actionPerformed(e);
}
});
jMenuItem6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem6_actionPerformed(e);
}
});
jMenuItem4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem4_actionPerformed(e);
}
});
jMenuItem5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem5_actionPerformed(e);
}
});
jMenuItem3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem3_actionPerformed(e);
}
});
jMenuItem7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem7_actionPerformed(e);
}
});
jMenuItem9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem9_actionPerformed(e);
}
});
jMenuItem10.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem10_actionPerformed(e);
}
});
jSplitPane1.setDividerSize(3);
jSplitPane1.setDividerLocation(170);
this.setLayout(borderLayout3);
jMenuItem8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuItem8_actionPerformed(e);
}
});
jPanel2.setBackground(Color.orange);
jPanel2.setLayout(borderLayout5);
this.NewNode(".\\disk1",dmtn1); //以disk1、disk2为树的两个结点
this.NewNode(".\\disk2",dmtn2);
jPanel1.setLayout(xYLayout1);
jScrollPane2.setHorizontalScrollBarPolicy(JScrollPane.
HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.
HORIZONTAL_SCROLLBAR_ALWAYS);
jPanel3.setLayout(borderLayout2);
jPanel4.setBackground(Color.pink);
jPanel4.setLayout(borderLayout4);
//jTree1.setRowHeight(18);
jPanel4.add(mm,BorderLayout.CENTER);
jPanel2.add(proc,BorderLayout.CENTER);
root.add(dmtn1); //将这两个结点添加到根结点
root.add(dmtn2);
jTree1 = new JTree(root);
jTree1.setSelectionRow(0); //默认选中根结点
model = (DefaultTreeModel) jTree1.getModel();
renderer = (DefaultTreeCellRenderer) jTree1.getCellRenderer();
//renderer.setLeafIcon(leafIcon);// 设定叶节点图标
renderer.setClosedIcon(closedIcon);// 设定关闭状态节点图标
renderer.setOpenIcon(openIcon);// 设定打开状态节点图标
jTree1.setCellRenderer(renderer);
init_table(); //生成只含表头的空表
/////////////////////////////////////////////////////////////////////////////////////////////
//读取Jree数据,生成于Jtable
jTree1.addTreeSelectionListener(new TreeSelectionListener()
{
public void valueChanged(TreeSelectionEvent e)
{
DefaultMutableTreeNode choosen_node = (DefaultMutableTreeNode) e
.getPath().getLastPathComponent();
TreeNode path[] = choosen_node.getPath();
if (choosen_node.getLevel()==0) return;
String fileName = path[1].toString();
for (int i=2;i<path.length;i++)
{
fileName += "\\"+path[i].toString();
}
File f = new File(".\\"+fileName);
init_table();
if (f.isDirectory())
{
File dir[] = f.listFiles();
for (int i = 0; i < dir.length; i++)
{
String dir_att = null;
if(dir[i].canWrite())
dir_att = "可读写";
else dir_att = "只读";
String f_length = String.valueOf(dir[i].length())+" B";
data = new Vector();
data.addElement(dir[i].getName());
data.addElement(dir[i].isDirectory() ? "" :f_length);
data.addElement(dir[i].isDirectory() ? "文件夹":"文件");
data.addElement(dir_att);
tableModel1.addRow(data);
}
}
else
{
String f_att = null;
if(f.canWrite())
f_att = "可读写";
else f_att = "只读";
String f_length = String.valueOf(f.length())+" B";
data = new Vector();
data.addElement(choosen_node.toString());
data.addElement(f_length);
data.addElement("文件");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?