import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.TextEvent;import java.awt.event.TextListener;import java.util.regex.*;class NormalCal extends JFrame implements ActionListener,KeyListener{boolean flag; //控制产生页面地址流或者直接计算JPanel TextFild; //数据显示区JPanel otherFild; //其他數據顯示區JPanel addrStreampanel; //頁面地址流面板JPanel pageSeqpanel; //頁面序列面板TextArea addrStream; //頁面地址流顯示TextArea pageSeq; //頁面序列顯示JScrollPane jsp1;JScrollPane jsp2;JComboBox pageSize; //頁面大小JButton config; //确认按鈕JButton back; //返回按鈕JFrame upFrame;int[] calAns; //存儲四種算法的運算結果int memSize; //内存页面数量int meth; //方法int length;String[] size;int[] seq;PUB_var myVar;NormalCal(int width,int height,Choose myChoose,int mod){upFrame=myChoose;flag=false; //flag默认值为falsemeth=mod;myVar=new PUB_var();myVar.PUB_Order();myVar.PUB_Yemian();GridBagLayout layout=new GridBagLayout();GridBagConstraints s=new GridBagConstraints();s.fill = GridBagConstraints.BOTH;Box Horizontal; //將panel控件水平放置Box VecLeft; //將panel左邊的控件設置緯垂直放置Box VecRight; //將panel右邊的控件設置緯垂直放置Horizontal=Box.createHorizontalBox();VecLeft=Box.createVerticalBox();VecRight=Box.createVerticalBox();Horizontal.setPreferredSize(new Dimension(width,2*height/3));Dimension textSize=new Dimension(width,2*height/3);Dimension otherSize=new Dimension(width,height/3);this.setSize(width+20, height); //设置界面的大小this.setVisible(true);this.setLayout(layout); //set the layoutJLabel img=new JLabel(new ImageIcon("pic/backup1.jpg"));img.setBounds(0, 0, this.getWidth(), this.getHeight());this.getLayeredPane().add(img,new Integer(Integer.MIN_VALUE));JPanel jp=(JPanel)this.getContentPane();jp.setOpaque(false);//添加控件TextFild=new JPanel();TextFild.setPreferredSize(textSize);addrStreampanel=new JPanel();pageSeqpanel=new JPanel();addrStream=new TextArea();if(mod==0){addrStream.setEditable(true);//addrStream.addKeyListener(null);}else{addrStream.setEditable(false);}jsp1=new JScrollPane(addrStream);pageSeq=new TextArea();pageSeq.setEditable(false);jsp2=new JScrollPane(pageSeq);addrStream.setPreferredSize(new Dimension(width/3,3*height/5));pageSeq.setPreferredSize(new Dimension(width/3,3*height/5));VecLeft.add(new JLabel("页面地址流"));VecLeft.add(addrStream);VecLeft.add(jsp1);addrStreampanel.add(VecLeft);VecRight.add(new JLabel("页面序列"));VecRight.add(pageSeq);VecRight.add(jsp2);pageSeqpanel.add(VecRight);addrStreampanel.setOpaque(false);Horizontal.add(addrStreampanel);Horizontal.add(Box.createHorizontalStrut(20));pageSeqpanel.setOpaque(false);Horizontal.add(pageSeqpanel);TextFild.add(Horizontal);TextFild.setVisible(true);s.gridwidth=0;s.gridheight=2;s.weightx=1;layout.setConstraints(TextFild, s);TextFild.setOpaque(false);add(TextFild);size=new String[29];for(int i=0;i<29;++i){size[i]=String.valueOf(i+4);}otherFild=new JPanel();pageSize=new JComboBox(size);pageSize.setSelectedIndex(4);pageSize.setPreferredSize(new Dimension(100,50));pageSize.setBorder(BorderFactory.createTitledBorder("选择页面大小"));pageSize.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubmyVar.PUB_Memory=Integer.parseInt(pageSize.getSelectedItem().toString());}});otherFild.add(pageSize);pageSize.setVisible(true);config=new JButton("START");config.setPreferredSize(new Dimension(100,50));config.addActionListener(this);otherFild.add(config);back=new JButton("back");back.setPreferredSize(new Dimension(100,50));back.addActionListener(this);otherFild.add(back);otherFild.setVisible(true);s.gridwidth=0;s.gridheight=0;s.weightx=1;layout.setConstraints(otherFild, s);otherFild.setOpaque(false);add(otherFild);setLocationRelativeTo(null);}public void actionPerformed(ActionEvent e){if(e.getSource().equals(back)){this.setVisible(false);upFrame.setVisible(true);}if(e.getSource().equals(config)){ //计算过程在该函数中实现if(meth==1){if(flag==false){ //若之前未点击config键addrStream.setText("");addrStream.setText(String.valueOf(myVar.PUB_Order[0]));pageSeq.setText(String.valueOf(myVar.PUB_Yemian[0]));for(int i=1;i<320;++i){addrStream.setText(addrStream.getText()+"\n"+myVar.PUB_Order[i]);pageSeq.setText(pageSeq.getText()+"\n"+myVar.PUB_Yemian[i]);}flag=true;//若之前点击过config键,则可直接计算System.out.println(myVar.PUB_Memory);flag=true;calAns=new int[4];FIFO alg1=new FIFO(myVar.PUB_Memory);calAns[0]=alg1.run(myVar.PUB_Yemian,320);optimal alg2=new optimal();calAns[1]=alg2.calculate_OPT(myVar.PUB_Yemian, myVar.PUB_Memory, 320);LUR alg3=new LUR(myVar.PUB_Memory);calAns[2]=alg3.run(myVar.PUB_Yemian,320);LFU alg4=new LFU();calAns[3]=alg4.calculate_LFU(myVar.PUB_Yemian, myVar.PUB_Memory, 320);flag=false;for(int i=0;i<4;++i){System.out.println(calAns[i]);}showFrame myshow=new showFrame(300,450,calAns,320,this,upFrame);}}else{if(flag==false){String des = "";String str=addrStream.getText();String result[]=str.split("\n");seq=new int[result.length];for(int i=0;i<result.length;++i){if(result[i].endsWith("\r")){result[i]=result[i].substring(0, result[i].length()-1);}seq[i]=Integer.parseInt(result[i])/10;des=des+String.valueOf(seq[i])+"\n";}length=result.length;pageSeq.setText(des);flag=true;flag=true;calAns=new int[4];FIFO alg1=new FIFO(myVar.PUB_Memory);calAns[0]=alg1.run(seq,length);optimal alg2=new optimal();calAns[1]=alg2.calculate_OPT(seq, myVar.PUB_Memory, length);LUR alg3=new LUR(myVar.PUB_Memory);calAns[2]=alg3.run(seq,length);LFU alg4=new LFU();calAns[3]=alg4.calculate_LFU(seq, myVar.PUB_Memory, length);flag=false;for(int i=0;i<4;++i){System.out.println(calAns[i]);}showFrame myshow=new showFrame(300,450,calAns,length,this,upFrame);}}}}public void textValueChanged(TextEvent e){}public void keyPressed(KeyEvent e){}public void keyReleased(KeyEvent e){}public void keyTyped(KeyEvent e){}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。