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 + -
显示快捷键?