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

📄 processtable4.java

📁 1、按优先权调度算法
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;

public class ProcessTable4 implements ActionListener
{
      // public AddFrame add ;
       int count=0;
       public	int k=0;
       public   int maxtime=0;
       public  int maxmemory = 100;
       public  int alocate = 0;
       JTable table1,table2,table3;
       
       DefaultTableModel defaultModel1 = null;
       DefaultTableModel defaultModel2 = null;
       DefaultTableModel defaultModel3 = null;
       
       String s1="ready",s2="waiting";
       public  JPanel panel1,panel2,panel3;
       public JLabel[] lab = new JLabel[4];
       public JLabel[] lab1 = new JLabel[4];
       public ProcessTable4(){
       JFrame f = new JFrame("Process Scheduling");
	   Container pane = f.getContentPane();
                
		JTable t= null;
		JButton b1,b2,b3,b4,b5,b6,b7;
                
		pane.setLayout(new GridLayout(2,1));
		
		
        panel1 = new JPanel();
		Object[][] process1={};
		String[] names = {"名称","时间片","优先数","主存大小"};
		
		
		defaultModel1=new DefaultTableModel(process1,names);
		table1=new JTable( defaultModel1);

		//table1.setPreferredScrollableViewportSize(new Dimension(500,200));
		JScrollPane sPane = new JScrollPane(table1);
		JLabel readyLabel=new JLabel("就绪队列",JLabel.CENTER);
		readyLabel.setBackground(Color.orange);
		readyLabel.setOpaque(true);
		readyLabel.setBorder(BorderFactory.createLineBorder(Color.magenta,10));
		panel1.add(readyLabel);
		panel1.add(sPane,BorderLayout.CENTER);
		
		panel2 = new JPanel();
        Object[][] process3={};
		String[] names3 = {"始址","长度","状态"};
		
		defaultModel3=new DefaultTableModel(process3,names3);
		table3=new JTable(defaultModel3);
		table3.setPreferredScrollableViewportSize(new Dimension(500,200));
		JScrollPane sPane3 = new JScrollPane(table3);
                
        JLabel lable3 = new JLabel("未分区表",JLabel.CENTER);
        lable3.setBackground(Color.orange);
		lable3.setOpaque(true);
	    lable3.setBorder(BorderFactory.createLineBorder(Color.magenta,10));

	   
        panel2.add(lable3);
        panel2.add(sPane3,BorderLayout.CENTER);
	
        panel3 = new JPanel();
		Object[][] process2={};
		String[] names2 = {"名称", "时间片", "优先数","主存大小"};
		
		defaultModel2=new DefaultTableModel(process2,names);
		table2=new JTable(defaultModel2);
		//table2.setPreferredScrollableViewportSize(new Dimension(500,200));
		JScrollPane sPane2 = new JScrollPane(table2);
		JLabel waitLabel = new JLabel("等待队列",JLabel.CENTER);
		waitLabel.setBackground(Color.pink);
		waitLabel.setOpaque(true);
		waitLabel.setBorder(BorderFactory.createLineBorder(Color.magenta,10));

		panel3.add(waitLabel);
		panel3.add(sPane2,BorderLayout.CENTER);
				
		JPanel panel6 = new JPanel(new GridLayout(1,2));
		JPanel panel7 = new JPanel(new GridLayout(6,1));
		JPanel panel8 = new JPanel(new GridLayout(6,1));
	    JPanel panel5 = new JPanel(new BorderLayout(2,1));
	    
	    JLabel lab4 = new JLabel("进程",SwingConstants.CENTER);
	    lab4.setBackground(Color.green);
	    lab4.setOpaque(true);
	    lab4.setVerticalAlignment(SwingConstants.CENTER);
	    lab4.setBorder(BorderFactory.createLineBorder(Color.cyan,5));
	    
	    JLabel lab3 = new JLabel("操作系统", SwingConstants.CENTER);
	    lab3.setBackground(Color.BLUE);
	    lab3.setOpaque(true);
	    lab3.setVerticalAlignment(SwingConstants.CENTER);
	    lab3.setBorder(BorderFactory.createLineBorder(Color.cyan,5));
	    panel8.add(lab4);
	    panel8.add(lab3);
		
		for(int i = 0;i<lab.length;i++){
        lab[i] = new JLabel("  ", SwingConstants.CENTER);
        lab[i].setVerticalAlignment(SwingConstants.CENTER);
		lab[i].setBorder(BorderFactory.createLineBorder(Color.BLACK,2));
		panel8.add(lab[i]);
		}
		
		JLabel lab41 = new JLabel("大小(K)",SwingConstants.CENTER);
		lab41.setBackground(Color.green);
	    lab41.setOpaque(true);
	    lab41.setVerticalAlignment(SwingConstants.CENTER);
	    lab41.setBorder(BorderFactory.createLineBorder(Color.cyan,5));
	
		JLabel lab5 = new JLabel("20k",SwingConstants.CENTER);
		lab5.setBackground(Color.BLUE);
	    lab5.setOpaque(true);
	    lab5.setVerticalAlignment(SwingConstants.CENTER);
	    lab5.setBorder(BorderFactory.createLineBorder(Color.cyan,5));
	    panel7.add(lab41);
		panel7.add(lab5);
		
	    for (int i = 0; i<lab1.length; i++){
	   	  /*lab[i] = new JLabel("操作系统", SwingConstants.CENTER);
	    lab1.setBackground(Color.BLUE);
	    lab1.setOpaque(true);*/
        lab1[i] = new JLabel("  ", SwingConstants.CENTER);
        lab1[i].setVerticalAlignment(SwingConstants.CENTER);
		lab1[i].setBorder(BorderFactory.createLineBorder(Color.BLACK,2));
		panel7.add(lab1[i]);
	    }
		
		panel6.add(panel8);
		panel6.add(panel7);
		
	    //panel7.add(new DrawingRect(10));
	
		b1 = new JButton("运行"); 	
		b2 = new JButton("增加"); 
		b3 = new JButton("退出");
        b4 = new JButton("排序");
        b5 = new JButton("[a]退出Add");
        b5.setMnemonic('a');


        
        panel5.add(b1,BorderLayout.EAST);
        panel5.add(b2,BorderLayout.WEST);
        panel5.add(b3,BorderLayout.SOUTH);
        panel5.add(b4,BorderLayout.NORTH);
        panel5.add(b5,BorderLayout.CENTER);
        
		b1.addActionListener(this);
		b3.addActionListener(this);
		b2.addActionListener(this);
        b4.addActionListener(this);
        b5.addActionListener(this);
        
        
        JSplitPane panel4 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
        false,panel5,panel6);
        panel4.setDividerLocation(0.5);
        panel4.setOneTouchExpandable(true);
        panel4.setDividerSize(10);
            
		JSplitPane spane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
		false,panel1,panel2);
		spane1.setDividerLocation(500);
		
		JSplitPane spane2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
		false,panel3,panel4);
		spane2.setDividerLocation(500);
		pane.add(spane1);
		pane.add(spane2);
	
		f.setSize(1000,500);
		f.show();
		f.addWindowListener(
			new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		}
	);	
	}
        

   public void actionPerformed(ActionEvent e){
         
		if(e.getActionCommand().equals("增加"))
	      { 
                   //add = new AddFrame();
                   new AddFrame().setVisible(true);
          }   
        else if(e.getActionCommand().equals("[a]退出Add")){
                   
              int a = Integer.parseInt(AddFrame.time.getText());
              int b = Integer.parseInt(AddFrame.prioty.getText());
              int c = Integer.parseInt(AddFrame.memory.getText());
              

              count++;
                 
               if (count<4){
                     defaultModel1.addRow(new Object[]{AddFrame.PID.getText(),new Integer(a),new Integer(b),new Integer(c)});
                     }
               else
                     defaultModel2.addRow(new Object[]{AddFrame.PID.getText(),new Integer(a),new Integer(b),new Integer(c)});
        
       		   new AddFrame().setVisible(false);
        }
        else if (e.getActionCommand().equals("排序"))
		{
           	table1.setAutoCreateColumnsFromModel(false);  
           	// Sort the values in the second column of the model
          	// in descending order
          	 int mColIndex1 = 2;
          	//int mColIndex2 = 2;
   			// boolean ascending = false;
    		sortColumn(defaultModel1, mColIndex1, false);
    		//sortColumn(defaultModel1, mColIndex2, ascending);
    		 //Vector data1 =defaultModel1.getDataVector();
        	 String[] memoryData1 = new String[defaultModel1.getRowCount()];
        	 String[] processData1 = new String[defaultModel1.getRowCount()];
        	 for (int i=0; i<memoryData1.length; i++) {
             memoryData1[i]  = defaultModel1.getValueAt(i,3).toString();
             processData1[i] = defaultModel1.getValueAt(i,0).toString();
        	 } 
    		 
    	
    		k++;//control the count
    		if(k==1){
    		
    		 for(int i = 0;i<memoryData1.length;i++ )
    		 {
    		   Object f  = defaultModel1.getValueAt(i,3);
    		   Object f1 = defaultModel1.getValueAt(i,0);
               lab[i].setText(f1.toString());
               
               lab1[i].setText(f.toString());
               lab1[i].setBackground(Color.orange);
               lab1[i].setOpaque(true);
    		 }
    		 //add the unalocate table
    		 for (int i = 0 ;i<memoryData1.length;i++){
    		 	
    		     alocate += Integer.parseInt(memoryData1[i]);
    		 }
    		 int unalocate = maxmemory - alocate-20;
    		 defaultModel3.addRow(new Object[]{new Integer(alocate+20),new Integer(unalocate),
    		 new Integer(1)});

⌨️ 快捷键说明

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