bitmap.rar

  • PUDN用户
    了解作者
  • Java
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 47
    下载次数
  • 2010-04-12 20:26
    上传日期
用位示图管理磁盘空间的分配与回收 操作系统课程设计
bitmap.rar
  • bitmap.java
    3.8KB
内容介绍
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class bitmap extends JFrame implements ActionListener { public static JPanel panel1,p1_1,p1_2,p1_5,panel2,p2_1; public static JTextField text1,text2; public static JTextArea textarea; public static JButton bt1,bt2,bt3; public static JScrollPane sp,sp1,sp2; public static int S,map[][],left[]; public static String string; public bitmap() { super("用位示图管理磁盘空间的分配与回收"); this.setSize(600,400); this.setLocation(50,40); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLayout(new BorderLayout()); map=new int[40][16]; left=new int[500]; S=40*16; panel1=new JPanel(); this.add(panel1,"West"); panel2=new JPanel(); this.add(panel2,BorderLayout.CENTER); panel1.setLayout(new GridLayout(8,1)); p1_1=new JPanel(); panel1.add(new JLabel("")); panel1.add(p1_1); p1_1.setLayout(new GridLayout(1,2)); panel1.add(new JLabel("")); p1_1.add(new JLabel("磁盘分配块数")); text1=new JTextField(""); panel1.add(text1); p1_2=new JPanel(); panel1.add(p1_2); panel1.add(new JLabel("")); p1_2.setLayout(new GridLayout(1,2)); p1_2.add(new JLabel("要回收的盘块号")); text2=new JTextField(""); panel1.add(text2); p1_5=new JPanel(); panel1.add(p1_5); p1_5.setLayout(new GridLayout(1,3)); bt1=new JButton("初始化"); bt2=new JButton("分配"); bt3=new JButton("回收"); p1_5.add(bt1); p1_5.add(bt2); p1_5.add(bt3); bt1.addActionListener(this); bt2.addActionListener(this); bt3.addActionListener(this); panel2.setLayout(new GridLayout(1,1)); textarea=new JTextArea(); sp= new JScrollPane(textarea); panel2.add(sp); this.setVisible(true); } public void newmap() { int k; for(int i=0;i<40;i++) for(int j=0;j<16;j++){ k = (int)(Math.random()*2); map[i][j]=k;} } public void print() { for(int j=0;j<16;j++) string+=j+" "; string+="\n"; for(int i=0;i<40;i++) { for(int j=0;j<16;j++) string+=map[i][j]+" "; string+="\n"; } textarea.append(string); } public void allocate(int n) { int k=0; textarea.setText(" "); String news="分配结果:\n"; for(int i=0;i<40;i++) for(int j=0;j<16;j++) if(k<n&&map[i][j]==0) { map[i][j]=1; left[k]=i*16+j; S--; k++; } for(k=0;k<n;k++) { news+="柱面"+left[k]/16+"磁道"+(left[k]%16)/4+"扇区"+(left[k]%16)%4+" \n"; } textarea.append(news); } public void callback(int n) { int a,b,c; a=n/16; b=n%16/4; c=n%16%4; textarea.setText(""); String news="回收结果:\n"; if(map[a][4*b+c]==0) { textarea.append("此块未分配!回收出错!\n"); } else { map[a][4*b+c]=0; news+="回收块对应的字节号:\n"+"柱面"+a+"磁道"+b+"扇区"+c+"\n"; S++; textarea.append(news); } } public void actionPerformed(ActionEvent e) { if(e.getSource()==bt1) { newmap(); print(); } if(e.getSource()==bt2) { int n; String news=""; n=Integer.parseInt(text1.getText()); print(); if(S==1||S-n<=0) { textarea.setText(""); news+="空间不足"; textarea.append(news); } else allocate(n); } if(e.getSource()==bt3) { int n; String news=""; n=Integer.parseInt(text2.getText()); if(S>640) { textarea.setText(""); news+="没有资源可回收"; textarea.append(news); } else callback(n); print(); } } public static void main(String arg[]) { new bitmap(); } }
评论
    相关推荐