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

📄 fenpei.java

📁 操作系统课程实验
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;
import javax.swing.event.*;
public class fenPei
{   public static void main(String args[])
     {   Windows win=new Windows("操作系统实验二(固定分区存储管理)"); 
     }
}

class Windows extends JFrame implements DocumentListener,ItemListener,ActionListener
{   JButton Okey,Qing;
    JRadioButton radiobutton1,radiobutton2;
    JTextArea text1;
    JTextField text3,text4;
    JLabel L1,L2,L3,L4;
    ButtonGroup suanfa;
    Windows(String s)
    {   super(s);
        setSize(360,500);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container con=getContentPane();
        con.setLayout(new BorderLayout());
        Okey=new JButton("检查系统是否可以分配");
        Qing=new JButton("回收分配区内存");
        Okey.addActionListener(this);
        Qing.addActionListener(this);   
        L1=new JLabel("分区号          起始地址          长度          占用标志");
        L2=new JLabel("请填写需用的内存数");
        L3=new JLabel("计本(4)        105032004028       胡 迪");
        L4=new JLabel("请输入要回收的分区号");
        text1=new JTextArea(19,25);
		text3=new JTextField(4);
		text4=new JTextField(2);
        (text1.getDocument()).addDocumentListener(this);
        JPanel pNorth,pSouth,pCenter;
        pNorth=new JPanel();
        pSouth=new JPanel();
        pCenter=new JPanel();          
        pNorth.add(L1);
        pNorth.add(new JScrollPane(text1));
        pCenter.add(L2);
        pCenter.add(text3);
        pCenter.add(L4);       
        pCenter.add(text4);
        pCenter.add(Okey);
        pCenter.add(Qing);
        pSouth.add(L3);        
        con.add(pNorth,BorderLayout.NORTH);
        con.add(pCenter,BorderLayout.CENTER);
        con.add(pSouth,BorderLayout.SOUTH);
        con.validate();
        validate();
    }
public void itemStateChanged(ItemEvent e)
{   if(e.getSource()==radiobutton1)
    {   
    }
    if(e.getSource()==radiobutton2)
    {  
    }
}
public void actionPerformed(ActionEvent e)
{   if(e.getSource()==Okey)
    {  {   String s=text1.getText();
           String nc=text3.getText();
           int ncc=Integer.parseInt(nc);
           StringTokenizer fenxi=new StringTokenizer(s," ,'\t','\n'");
           int n=fenxi.countTokens();
           String a[]=new String[n];
           int m=n/4;
           for(int i=0;i<=n-1;i++)
               {   String temp=fenxi.nextToken();
                   a[i]=temp;
               }
               String[] name=new String[n];
               String[] length=new String[n];
               String[] state=new String[n];
               String[] qi=new String[n];
               int p=0,r=0,q=0,t=0;          
           for(int i=0;i<=n-1;i++)
               {   if(i%4==0)
                   {  name[p]=new String(a[i]);
                      p++;
                   }
                   if(i%4==1)
                   {  qi[q]=new String(a[i]);
                      q++;
                   }
                   if(i%4==2)
                   {  length[r]=new String(a[i]);
                      r++;
                   }
                   if(i%4==3)
                   {  state[t]=new String(a[i]);
                      t++;
                   }
               }  
           int count=0,i=0,flag=0,position=0;       
           for(i=0;i<m;i++)
                 {   int pp=Integer.parseInt(length[i]);
                     if(ncc<=pp)
                       {   if(state[i].equals("0"))
                            { 	state[i]=new String("1");
                                position=i;
                                flag=1;
                                break;
                            }
                       }
                 }
		   text1.setText("");
		   for(i=0;i<=m-1;i++)
		   {   text1.append(name[i]+"\t"+qi[i]+"\t"+length[i]+"\t"+state[i]+"\n");
		   }
		   if(flag==1)
		   {    String ri=new String();
		        ri=String.valueOf(position+1);
		        text1.append("可分配空间,分区号为:"+ri);
		   }
		   else
		        text1.append("不能分配内存空间!");
		   }		 
       }
    if(e.getSource()==Qing)
        {  String s=text1.getText();
           StringTokenizer fenxi=new StringTokenizer(s," ,'\t','\n'");
           int n=fenxi.countTokens();
           String a[]=new String[n];
           int m=n/4;
           for(int i=0;i<=n-1;i++)
               {   String temp=fenxi.nextToken();
                   a[i]=temp;
               }
               String[] name=new String[n];
               String[] length=new String[n];
               String[] state=new String[n];
               String[] qi=new String[n];
               int p=0,r=0,q=0,t=0;          
           for(int i=0;i<=n-1;i++)
               {   if(i%4==0)
                   {  name[p]=new String(a[i]);
                      p++;
                   }
                   if(i%4==1)
                   {  qi[q]=new String(a[i]);
                      q++;
                   }
                   if(i%4==2)
                   {  length[r]=new String(a[i]);
                      r++;
                   }
                   if(i%4==3)
                   {  state[t]=new String(a[i]);
                      t++;
                   }
               }
            String qq=text4.getText();
            int qqq=Integer.parseInt(qq);
            qqq--;
            state[qqq]=new String("0"); 
            text1.setText("");
            for(int i=0;i<=m-1;i++)
		   {   text1.append(name[i]+"\t"+qi[i]+"\t"+length[i]+"\t"+state[i]+"\n");
		   }
		   text1.append("已将分区"+qq+"的内存空间回收!");
        }
}
public void changedUpdate(DocumentEvent e)
{  
    changedUpdate(e);
}
public void removeUpdate(DocumentEvent e)//接口方法。
{//	changedUpdate(e);
}
public void insertUpdate(DocumentEvent e)//接口方法。
{//	changedUpdate(e);
}
}

⌨️ 快捷键说明

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