//阻塞控制
interrupt.setBounds(650,95,100,25); c.add(interrupt);
interrupt.addActionListener(this);
jl5=new JLabel(\就绪队列:\ jl5.setForeground(Color.red); jl5.setBounds(10,140,70,20); c.add(jl5);
//---------------------------就绪队列JTable
String name2[]={\进程ID\优先级\提交时间\运行耗时\已运行\ nm2=new Vector
for(int column=0;column ready=new MTable(readyData,nm2); // DefaultTableModel model2 = new DefaultTableModel(); // ready.setmodel(model2); // ready.setPreferredScrollableViewportSize(new Dimension(500,100)); // ready.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); ready.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); ready.setSelectionBackground(Color.yellow); ready.setSelectionForeground(Color.red); // ready.setRowHeight(30); jsp1=new JScrollPane(); jsp1.setViewportView(ready); jsp1.setBounds(10,165,600,100); c.add(jsp1); jl6=new JLabel(\阻塞队列:\ jl6.setForeground(Color.red); jl6.setBounds(10,280,70,20); c.add(jl6); //------------------------------------阻塞队列JTable String name3[]={\进程ID\优先级\提交时间\运行耗时\开始时间\已运行\ nm3=new Vector for(int column=0;column interrupted=new MTable(waitData,nm3); // interrupted.setPreferredScrollableViewportSize(new Dimension(440,80)); // interrupted.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); interrupted.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); interrupted.setSelectionBackground(Color.yellow); interrupted.setSelectionForeground(Color.red); // interrupted.setRowHeight(30); jsp2=new JScrollPane(); jsp2.setViewportView(interrupted); jsp2.setBounds(10,305,600,80); c.add(jsp2); wakeup=new JButton(\//唤醒控制 wakeup.setBounds(650,325,100,25); c.add(wakeup); wakeup.addActionListener(this); jl7=new JLabel(\完成队列:\ jl7.setForeground(Color.red); jl7.setBounds(10,400,70,20); c.add(jl7); //---------------------------------------完成队列JTable String name4[]={\进程ID\优先级\提交时间\运行耗时\开始时间\完成时间\带权周转时间\ nm4=new Vector for(int column=0;column finish=new MTable(finishData,nm4); // finish.setPreferredScrollableViewportSize(new Dimension(500,120)); // finish.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); finish.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); finish.setSelectionBackground(Color.yellow); finish.setSelectionForeground(Color.red); // finish.setRowHeight(30); jsp3=new JScrollPane(); jsp3.setViewportView(finish); jsp3.setBounds(10,425,600,120); c.add(jsp3); save=new JButton(\保存结果\ save.setBounds(250,580,100,25); c.add(save); save.addActionListener(this); exit=new JButton(\退出系统\ exit.setBounds(400,580,100,25); c.add(exit); exit.addActionListener(this); 唤 醒 进 程 \ c.setVisible(true); frame.setVisible(true); new //线程启动 new Looking().start(); } //--------------------------------------------------------------------------------------------------------------- public int outputruntime(){ //从输入框获取运行时间 String s=tm.getText(); int rt; if(s.trim().length()==0) return 0; else{ try{ rt=Integer.parseInt(s); return rt; }catch(NumberFormatException e){ System.out.println(\您没有输入数值数据!\ return 0; } } } //------------------------------------------------------------------------------------------- class ModeChoice implements ItemListener{ public void itemStateChanged(ItemEvent e){ item=e.getItem().toString(); } } @SuppressWarnings(\ public void operation(){ //进程调度核心算法: PF,SRTF,MLFQ的计算 Vector cloneData=(Vector)FCFS.clone(); for(int i=0;i ThreadRunning().start(); max=0; for(int j=1;j up=(Vector)cloneData.get(max); bridge=(Vector)cloneData.get(cloneData.size()-i-1); cloneData.setElementAt(up,cloneData.size()-i-1); cloneData.setElementAt(bridge,max); } PF=cloneData; DPF=cloneData; cloneData=(Vector)FCFS.clone(); for(int i=0;i maxp=(Integer)temp.get(3)-(Integer)temp.get(4); max=0; for(int j=1;j midp=(Integer)temp.get(3)-(Integer)temp.get(4); if(maxp up=(Vector)cloneData.get(max); bridge=(Vector)cloneData.get(cloneData.size()-i-1); cloneData.setElementAt(up,cloneData.size()-i-1); cloneData.setElementAt(bridge,max); } SJF=cloneData; cloneData=(Vector)FCFS.clone(); for(int i=0;i maxp=(Integer)temp.get(3)-(Integer)temp.get(4); max=0; for(int j=1;j midp=(Integer)temp.get(3)-(Integer)temp.get(4); if(maxp maxp=midp; } } up=(Vector)cloneData.get(max); bridge=(Vector)cloneData.get(cloneData.size()-i-1); cloneData.setElementAt(up,cloneData.size()-i-1); cloneData.setElementAt(bridge,max); } SRTF=cloneData; } @SuppressWarnings(\ public void addrunData(){ Vector // temp1=readyData.ElementAt(0); // temp1=readyData.firstElement(); // temp1=readyData.get(0); //三种获取元素的方法 if(readyData.firstElement() instanceof Vector){ tp=(Vector)readyData.get(0); } for(int i=0;i temp1.add(tp.get(i)); Integer ide=(Integer)temp1.get(0); readyData.removeElementAt(0); for(int i=0;i tp=(Vector)FCFS.get(i); Integer iden=(Integer)tp.get(0); if(iden==ide){ FCFS.removeElementAt(i); operation(); break; } } PCB pro=new PCB(); if(allData.get(ide) instanceof PCB){ pro=(PCB)allData.get(ide); }