📄 fenpei.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 + -