⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 window.java

📁 可变分区存储模拟系统-为课程设计用的。操作系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import javax.swing.*;
import java.awt.event.*;
import java.util.ArrayList;



public class window extends JFrame implements ActionListener, FocusListener {

    void buildConstraints(GridBagConstraints g, int gx, int gy, int gw, int gh,
                          int wx, int wy) {
        g.gridx = gx;
        g.gridy = gy;
        g.gridwidth = gw;
        g.gridheight = gh;
        g.weightx = wx;
        g.weighty = wy;
    }

    visual v = new visual(true, 400);
    Color[] cs;
    Rectangle2D[] rs;
    java.util.ArrayList COLORPANEL;
    DrawPanel P3 = new DrawPanel(); //选项卡的第三个面板,画图面板.自定义类对象
//  JFrame f=new JFrame();
//定义面板
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();

//定义菜单
    JMenuBar menuBar = new JMenuBar();
    JMenu fz = new JMenu("算法设置(ALT+S)");
    JMenu ws = new JMenu("初始和重置(ALT+F)");
    JMenu wc = new JMenu("操作(ALT+C)");
    JMenu tc = new JMenu("关于(ALT+A)");

    JMenuItem fz_1 = new JMenuItem("搬家算法");
    JMenuItem fz_2 = new JMenuItem("不搬家算法");
    JMenuItem ws_1 = new JMenuItem("初始");
    JMenuItem ws_2 = new JMenuItem("重置");
    JMenuItem ws_3 = new JMenuItem("退出");
    JMenuItem wc_1 = new JMenuItem("设置内存大小");
    JMenuItem wc_2 = new JMenuItem("添加进程");
    JMenuItem wc_3 = new JMenuItem("撤消进程");
    JMenuItem wc_4 = new JMenuItem("撤消所有进程");
    JMenuItem tc_1 = new JMenuItem("详细说明");

//定义选项卡面板
    JTabbedPane jtp = new JTabbedPane();
    JPanel xPanel = new JPanel();
    JPanel yPanel = new JPanel();
    JPanel zPanel = new JPanel();
    final String[] colHeads1 = {"进程名", "所占空间大小", "所占地址下界", "所占地址上界"};
    Object[][] data1 = new Object[50][4];
    JTable table1 = new JTable(data1, colHeads1);
    final String[] colHeads2 = {"空闲块号", "块长度", "地址下界", "地址上界"};
    Object[][] data2 = new Object[50][4];
    JTable table2 = new JTable(data2, colHeads2);
    JLabel l1 = new JLabel("0KB");
    JLabel l2 = new JLabel("400KB");
    JTextField ttt[] = new JTextField[400];
    JPanel pp = new JPanel();
    JScrollPane jsp3;
    /*
         final String[] colHeads3 = {""};
         Object[][] data3 = new Object[400][1];
         JTable table3 = new JTable(data3, colHeads3);*/




//定义p2面板中的内容

    //设定算法
    JLabel s = new JLabel("~~***算法***~~");
    JRadioButton s1 = new JRadioButton("搬家算法");
    JRadioButton s2 = new JRadioButton("不搬家算法");

    //设定内存
    JLabel s3 = new JLabel("~~***设定内存大小***~~");
    JTextField t = new JTextField(5);
    JLabel s4 = new JLabel("KB");
    JButton b = new JButton("确定内存大小");

    //分配、回收
    JLabel f = new JLabel("~~***分配与回收进程空间***~~");
    JLabel f1 = new JLabel("进程名");
    JLabel f2 = new JLabel("进程大小");
    JLabel f3 = new JLabel("进程颜色代表");
    JLabel f4 = new JLabel("KB");
    JTextField t1 = new JTextField(5);
    JTextField t2 = new JTextField(5);
    JButton b0 = new JButton("    ");
    JButton b1 = new JButton("添加进程");
    JButton b2 = new JButton("撤消进程");
    JButton b3 = new JButton("撤消所有进程");

    //重置和推出
    JLabel f5 = new JLabel("~~***重置和退出***~~");
    JButton b4 = new JButton("重置");
    JButton b5 = new JButton("退出");

////////////////////////////////////////////构造函数//////////////////////////////////
    window() {

        super("可变分区存储管理模拟");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        super.setSize(700, 700);
        this.setResizable(false);
        COLORPANEL=new ArrayList();
        COLORPANEL.add(Color.yellow);
        COLORPANEL.add(Color.RED);
        COLORPANEL.add(Color.PINK);
        COLORPANEL.add(Color.orange);
        COLORPANEL.add(Color.MAGENTA);
        COLORPANEL.add(Color.LIGHT_GRAY);
        COLORPANEL.add(Color.GREEN);
        COLORPANEL.add(Color.GRAY);
        COLORPANEL.add(Color.CYAN);
        COLORPANEL.add(Color.DARK_GRAY);
        COLORPANEL.add(Color.blue);



//p1面板为最大的面板,包括菜单栏、选项卡窗格、和P2面板。且采用边框布局
        p1.setLayout(new BorderLayout());
        p1.add("North", menuBar);
        p1.add("West", jtp);
        p1.add("East", p2);

//菜单
        setJMenuBar(menuBar);

        fz.setMnemonic('S');
        ws.setMnemonic('F');
        wc.setMnemonic('C');
        tc.setMnemonic('A');

        menuBar.add(fz);
        menuBar.add(ws);
        menuBar.add(wc);
        menuBar.add(tc);

        fz.add(fz_1);
        fz_1.addActionListener(this);
        fz.addSeparator(); //分隔副
        fz.add(fz_2);
        fz_2.addActionListener(this);
        ws.add(ws_1);
        ws_1.addActionListener(this);
        ws.addSeparator();
        ws.add(ws_2);
        ws_2.addActionListener(this);
        ws.addSeparator();
        ws.add(ws_3);
        ws_3.addActionListener(this);
        wc.add(wc_1);
        wc_1.addActionListener(this);
        wc.addSeparator();
        wc.add(wc_2);
        wc_2.addActionListener(this);
        wc.addSeparator();
        wc.add(wc_3);
        wc_3.addActionListener(this);
        wc.addSeparator();
        wc.add(wc_4);
        wc_4.addActionListener(this);
        tc.add(tc_1);
        tc_1.addActionListener(this);

//选项卡窗格
        jtp.addTab("进程", xPanel);
        jtp.addTab("空闲区", yPanel);
        jtp.addTab("内存状态图示", zPanel);

        //////进程面板///////////////
        xPanel.setLayout(new BorderLayout());

        int v1 = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
        int h1 = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
        table1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        table1.addFocusListener(this);
        JScrollPane jsp1 = new JScrollPane(table1, v1, h1);
        xPanel.add(jsp1, BorderLayout.CENTER);

        //////空闲区面板////////////
        yPanel.setLayout(new BorderLayout());

        int v2 = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
        int h2 = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
        JScrollPane jsp2 = new JScrollPane(table2, v2, h2);
        yPanel.add(jsp2, BorderLayout.CENTER);

        /////内存状态图////////////
        zPanel.setLayout(new BorderLayout());
        int v3 = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS;
        int h3 = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS;
        /////////////////////////////////////////////////////////////////////////


        //jsp3 = new JScrollPane(P3, v3, h3);

        ///////////////////////////////////////////////////////
        zPanel.add(l1, BorderLayout.NORTH);
        zPanel.add(l2, BorderLayout.SOUTH);
        zPanel.add(P3, BorderLayout.CENTER);

//p2面板 采用网格袋布局
        // p2.setSize(50,450);
        GridBagLayout g = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        p2.setLayout(g);

        /////算法////
        buildConstraints(c, 0, 0, 3, 1, 20, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(s, c);
        p2.add(s);

        buildConstraints(c, 0, 1, 1, 1, 20, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(s1, c);
        s1.addActionListener(this);
        s1.setSelected(true);
        p2.add(s1);

        buildConstraints(c, 0, 2, 1, 1, 0, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(s2, c);
        s2.addActionListener(this);
        p2.add(s2);

        ButtonGroup bg = new ButtonGroup();
        bg.add(s1);
        bg.add(s2);

        ////设定内存/////////////////
        buildConstraints(c, 0, 3, 1, 1, 0, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(s3, c);
        p2.add(s3);

        buildConstraints(c, 0, 4, 2, 1, 0, 0);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.CENTER;
        g.setConstraints(t, c);
        t.addActionListener(this);
        t.setText("400");
        t.setEditable(false);
        p2.add(t);

        buildConstraints(c, 1, 4, 1, 1, 30, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(s4, c);
        p2.add(s4);

        buildConstraints(c, 0, 5, 1, 1, 0, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.CENTER;
        g.setConstraints(b, c);
        b.addActionListener(this);
        b.setEnabled(false);
        p2.add(b);

        ////分配和回收///////////////
        buildConstraints(c, 0, 6, 3, 1, 0, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(f, c);
        p2.add(f);

        buildConstraints(c, 0, 7, 1, 1, 0, 0);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.CENTER;
        g.setConstraints(f1, c);
        p2.add(f1);

        buildConstraints(c, 1, 7, 1, 1, 0, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(t1, c);
        t1.addActionListener(this);

        p2.add(t1);

        buildConstraints(c, 0, 8, 1, 1, 0, 0);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.CENTER;
        g.setConstraints(f2, c);
        p2.add(f2);

        buildConstraints(c, 1, 8, 1, 1, 0, 0);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(t2, c);
        t2.addActionListener(this);
        p2.add(t2);

        buildConstraints(c, 2, 8, 1, 1, 0, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(f4, c);
        p2.add(f4);

        buildConstraints(c, 0, 9, 1, 1, 0, 0);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.CENTER;
        g.setConstraints(f3, c);
        p2.add(f3);

        buildConstraints(c, 1, 9, 1, 1, 0, 5);
        c.fill = GridBagConstraints.NONE;
        c.anchor = GridBagConstraints.WEST;
        g.setConstraints(b0, c);
        b0.setBackground((Color)COLORPANEL.get(0)); /////////////////////////////////////////////
        p2.add(b0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -