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

📄 ui.java.svn-base

📁 java写的一个模拟cpu程序
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
			jtfPrintQueue.setEditable(false);
			jtfPrintQueue.setHorizontalAlignment(JTextField.RIGHT);
		}
		return jtfPrintQueue;
	}

	/**
	 * This method initializes jpQueueMoniter	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpQueueMoniter() {
		if (jpQueueMoniter == null) {
			jpQueueMoniter = new JPanel();
			jpQueueMoniter.setLayout(null);
			jpQueueMoniter.setLocation(new Point(270, 380));
			jpQueueMoniter.setSize(new Dimension(300, 85));
			jpQueueMoniter.add(getJpPrintQueue(), null);
			jpQueueMoniter.add(getJpReadyQueue(), null);
			jpQueueMoniter.add(getJpInputQueue(), null);
		}
		return jpQueueMoniter;
	}

	/**
	 * This method initializes jpButtons	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpButtons() {
		if (jpButtons == null) {
			jpButtons = new JPanel();
			jpButtons.setLayout(null);
			jpButtons.setPreferredSize(new Dimension(250, 55));
			jpButtons.add(getJbExecute(), null);
			jpButtons.add(getJbSave(), null);
			jpButtons.add(getJbLoad(), null);
			jpButtons.add(getJbClear(), null);
		}
		return jpButtons;
	}

	/**
	 * This method initializes jbExecute	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbExecute() {
		if (jbExecute == null) {
			jbExecute = new JButton();
			jbExecute.setText("Execute");
			jbExecute.setSize(new Dimension(150, 25));
			jbExecute.setLocation(new Point(50, 30));
			jbExecute.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					mem.addProcess(new BufferedReader(new StringReader(getJtaProcessEditer().getText())));
				}
			});
		}
		return jbExecute;
	}

	/**
	 * This method initializes jbSave	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbSave() {
		if (jbSave == null) {
			jbSave = new JButton();
			jbSave.setText("Save");
			jbSave.setSize(new Dimension(70, 25));
			jbSave.setLocation(new Point(90, 0));
			jbSave.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					JFileChooser chooser = new JFileChooser("./");
					chooser.addChoosableFileFilter(new FileNameExtensionFilter("Assemble Language File", "asm", "jii"));
					chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
					chooser.setMultiSelectionEnabled(false);
					int option = chooser.showSaveDialog(UI.this);
					if(option == JFileChooser.APPROVE_OPTION) {
						File file = chooser.getSelectedFile();
						if(file != null) {
							try {
								file.createNewFile();
								FileWriter writer = new FileWriter(file, false);
								writer.write(getJtaProcessEditer().getText());
								writer.close();
							} catch (IOException e1) {
								e1.printStackTrace();
							}
						}
					}
				}
			});
		}
		return jbSave;
	}

	/**
	 * This method initializes jbLoad	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbLoad() {
		if (jbLoad == null) {
			jbLoad = new JButton();
			jbLoad.setPreferredSize(new Dimension(70, 30));
			jbLoad.setMnemonic(KeyEvent.VK_UNDEFINED);
			jbLoad.setLocation(new Point(170, 0));
			jbLoad.setSize(new Dimension(70, 25));
			jbLoad.setText("Load");
			jbLoad.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(ActionEvent e) {
					JFileChooser chooser = new JFileChooser("./");
					chooser.addChoosableFileFilter(new FileNameExtensionFilter("Assemble Language File", "asm", "jii"));
					chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
					chooser.setMultiSelectionEnabled(false);
					int option = chooser.showOpenDialog(UI.this);
					if(option == JFileChooser.APPROVE_OPTION) {
						File file = chooser.getSelectedFile();
						if(file.exists()) {
							try {
								BufferedReader reader = new BufferedReader(new FileReader(file));
								String s;
								getJtaProcessEditer().setText("");
								while((s = reader.readLine()) != null)
									getJtaProcessEditer().append(s + '\n');
								reader.close();
							} catch (IOException e1) {
								e1.printStackTrace();
							}
						}
					}
				}
			});
		}
		return jbLoad;
	}

	/**
	 * This method initializes jbClear	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbClear() {
		if (jbClear == null) {
			jbClear = new JButton();
			jbClear.setText("Clear");
			jbClear.setLocation(new Point(10, 0));
			jbClear.setSize(new Dimension(70, 25));
			jbClear.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					getJtaProcessEditer().setText("");
				}
			});
		}
		return jbClear;
	}
	
	public void setParameters(PCB pcb, SynchronizedQueue readyQueue, SynchronizedQueue inputQueue, SynchronizedQueue printQueue, Keyboard keyboard, Memory mem) {
		
		this.pcb = pcb;
		this.readyQueue = readyQueue;
		this.inputQueue = inputQueue;
		this.printQueue = printQueue;
		//this.keyboard = keyboard;
		this.mc = keyboard.getMc();
		this.mem = mem;
		
	}
	
	public void updatePCB() {
		
		getJtfProcessID().setText(new Integer(pcb.getProcessID()).toString());
		getJtfPC().setText(pcb.getRegisters().getPc().toString());
		getJtfAC().setText(pcb.getRegisters().getAc().toString());
		int n = pcb.getRegisters().getPsw().getState();
		int m = HALT;
		for(int j = 0; j < jlPSWs.length; j++) {
			jlPSWs[j].setText((n & m) == 0 ? "0" : "1");
			m /= 2;
		}
		getJtfIR().setText(pcb.getRegisters().getIr().toString());
		getJtfR0().setText(pcb.getRegisters().getRn(0).toString());
		getJtfR1().setText(pcb.getRegisters().getRn(1).toString());
		getJtfR2().setText(pcb.getRegisters().getRn(2).toString());
		getJtfR3().setText(pcb.getRegisters().getRn(3).toString());
		getJtfR4().setText(pcb.getRegisters().getRn(4).toString());
		getJtfR5().setText(pcb.getRegisters().getRn(5).toString());
		getJtfR6().setText(pcb.getRegisters().getRn(6).toString());
		getJtfR7().setText(pcb.getRegisters().getRn(7).toString());
		
	}
	
	public void updateQueue() {
		
		getJtfReadyQueue().setText(readyQueue.toString());
		getJtfInputQueue().setText(inputQueue.toString());
		getJtfPrintQueue().setText(printQueue.toString());
		
	}
	
	public void setJlInputText(String s) {
		
		jlInput.setText("Input" + s);
		
	}
	
	public synchronized void print(String s) {
		
		getJtaPrinter().append(s);
		
	}
	
	public synchronized void clearPrinter() {
		
		getJtaPrinter().setText("");
		
	}
	
	public synchronized void display(String s) {
		
		getJtaConsole().append(s + '\n');
		
	}

	/**
	 * This method initializes jpPSWS	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpPSWS() {
		if (jpPSWS == null) {
			jpPSWS = new JPanel();
			jpPSWS.setLayout(new GridBagLayout());
			jpPSWS.setLocation(new Point(40, 0));
			jpPSWS.setSize(new Dimension(205, 25));
			for(int i = 0; i < jlPSWs.length; i++) {
				jlPSWs[i] = new JLabel();
				jlPSWs[i].setHorizontalAlignment(SwingConstants.RIGHT);
				jlPSWs[i].setHorizontalTextPosition(SwingConstants.RIGHT);
				jlPSWs[i].setText("");
				jlPSWs[i].setBorder(BorderFactory.createLineBorder(Color.lightGray, 1));
				jlPSWs[i].setPreferredSize(new Dimension(25, 22));
				jpPSWS.add(jlPSWs[i], null);
			}
		}
		return jpPSWS;
	}

	/**
	 * This method initializes jpControll	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpControll() {
		if (jpControll == null) {
			jlControllButton = new JLabel();
			jlControllButton.setText("Controll Buttons");
			jlControllButton.setPreferredSize(new Dimension(34, 20));
			jpControll = new JPanel();
			jpControll.setLayout(new BorderLayout());
			jpControll.setSize(new Dimension(250, 120));
			jpControll.setLocation(new Point(580, 415));
			jpControll.add(jlControllButton, BorderLayout.NORTH);
			jpControll.add(getJpControllButton(), BorderLayout.CENTER);
		}
		return jpControll;
	}

	/**
	 * This method initializes jpControllButton	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpControllButton() {
		if (jpControllButton == null) {
			jpControllButton = new JPanel();
			jpControllButton.setLayout(null);
			jpControllButton.add(getJpMunal(), null);
			jpControllButton.add(getJpAuto(), null);
			ButtonGroup bg = new ButtonGroup();
			bg.add(getJrbAutoMode());
			bg.add(getJrbManualMode());
		}
		return jpControllButton;
	}

	/**
	 * This method initializes jpAutoMode	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpAutoMode() {
		if (jpAutoMode == null) {
			jlAutoMode = new JLabel();
			jlAutoMode.setText("Auto");
			jlAutoMode.setHorizontalTextPosition(SwingConstants.CENTER);
			jlAutoMode.setHorizontalAlignment(SwingConstants.CENTER);
			jpAutoMode = new JPanel();
			jpAutoMode.setLayout(new BorderLayout());
			jpAutoMode.setPreferredSize(new Dimension(75, 25));
			jpAutoMode.add(getJrbAutoMode(), BorderLayout.WEST);
			jpAutoMode.add(jlAutoMode, java.awt.BorderLayout.CENTER);
		}
		return jpAutoMode;
	}

	/**
	 * This method initializes jrbAutoMode	
	 * 	
	 * @return javax.swing.JRadioButton	
	 */
	private JRadioButton getJrbAutoMode() {
		if (jrbAutoMode == null) {
			jrbAutoMode = new JRadioButton();
			jrbAutoMode.setSelected(true);
			jrbAutoMode.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					getJbNext().setEnabled(false);
					getJtfAuto().setEnabled(true);
					mode.setMode(RunningMode.AUTO);
					//System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jrbAutoMode;
	}

	/**
	 * This method initializes jpManualMode	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpManualMode() {
		if (jpManualMode == null) {
			jlManualMode = new JLabel();
			jlManualMode.setHorizontalAlignment(SwingConstants.CENTER);
			jlManualMode.setText("Manual");
			jlManualMode.setHorizontalTextPosition(SwingConstants.CENTER);
			jpManualMode = new JPanel();
			jpManualMode.setLayout(new BorderLayout());
			jpManualMode.setPreferredSize(new Dimension(75, 25));
			jpManualMode.add(getJrbManualMode(), BorderLayout.WEST);
			jpManualMode.add(jlManualMode, BorderLayout.CENTER);
		}
		return jpManualMode;
	}

	/**
	 * This method initializes jrbManualMode	
	 * 	
	 * @return javax.swing.JRadioButton	
	 */
	private JRadioButton getJrbManualMode() {
		if (jrbManualMode == null) {
			jrbManualMode = new JRadioButton();
			jrbManualMode.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					getJbNext().setEnabled(true);
					getJtfAuto().setEnabled(false);
					mode.setMode(RunningMode.MANUAL);
					//System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jrbManualMode;
	}

	/**
	 * This method initializes jbNext	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbNext() {
		if (jbNext == null) {
			jbNext = new JButton();
			jbNext.setPreferredSize(new Dimension(75, 25));
			jbNext.setEnabled(false);
			jbNext.setText("Next");
			jbNext.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					getJbNext().setEnabled(false);
					mode.setButtonPressed(true);
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jbNext;
	}

	/**
	 * This method initializes jtfAuto	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJtfAuto() {
		if (jtfAuto == null) {
			jtfAuto = new JTextField();
			jtfAuto.setPreferredSize(new Dimension(75, 25));
			jtfAuto.setHorizontalAlignment(JTextField.TRAILING);
			jtfAuto.setToolTipText("Should be a value between 1 to 20");
			jtfAuto.setText("2");
		}
		return jtfAuto;
	}

	/**
	 * This method initializes jpMunal	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpMunal() {
		if (jpMunal == null) {
			jlManual = new JLabel();
			jlManual.setText("Press next to run step by step");
			jpMunal = new JPanel();
			jpMunal.setLayout(new BorderLayout());
			jpMunal.setLocation(new Point(40, 50));
			jpMunal.setSize(new Dimension(170, 45));
			jpMunal.add(getJpManualMode(), BorderLayout.WEST);
			jpMunal.add(getJbNext(), BorderLayout.EAST);
			jpMunal.add(jlManual, BorderLayout.NORTH);
		}
		return jpMunal;
	}

	/**
	 * This method initializes jpAuto	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJpAuto() {
		if (jpAuto == null) {
			jlAuto = new JLabel();
			jlAuto.setText("Set the frequency of the cpu");
			jpAuto = new JPanel();
			jpAuto.setLayout(new BorderLayout());
			jpAuto.setLocation(new Point(40, 5));
			jpAuto.setSize(new Dimension(170, 45));
			jpAuto.add(getJpAutoMode(), BorderLayout.WEST);
			jpAuto.add(getJtfAuto(), BorderLayout.EAST);
			jpAuto.add(jlAuto, BorderLayout.NORTH);
		}
		return jpAuto;
	}

	/**
	 * Return the mode.
	 */
	
	public RunningMode getMode() {
	
		return mode;
	
	}

	/**
	 * Reset the mode.
	 */
	
	public void setMode(RunningMode mode) {
	
		this.mode = mode;
	
	}
	
	public int getSleepTime() {
		
		String s = getJtfAuto().getText();
		int i;
		try {
			i = Integer.parseInt(s);
		}
		catch (NumberFormatException ex) {
			i = 2;
		}
		
		if(i < 1 || i > 20)
			i = 2;
		
		//display("CPU frequency set to be " + new Integer(i).toString());
		
		return (int) (1000 / i);
		
	}
	
	public void enableButton() {
		synchronized (mode) {
			mode.setButtonPressed(false);
			if(mode.getMode() == RunningMode.MANUAL)
				getJbNext().setEnabled(true);
		}
	}

}  //  @jve:decl-index=0:visual-constraint="-27,-42"

⌨️ 快捷键说明

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