import java.awt.event.WindowEvent; import java.io.File;
import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator;
import java.util.StringTokenizer;
import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JRadioButton; import javax.swing.JRootPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableCellRenderer;
public class CPUScheduling extends JFrame { /** * 定义变量 */
private static final long serialVersionUID = -6748846647033499999L; //放歌对象
private AudioClip clip; //内存占用情况
private static int rate=0; private
static
JProgressBar
jpr
=
new
JProgressBar(0,1000);
static private PrintWriter stdErr = new PrintWriter(System.err, true);
private boolean bflag=false;
static private int WIDTH = 1000, HEIGHT = 730; //
/* 各列表对应的面板规格*/
/* 对应各名词释义 backupBAK 后备 ready 就绪 suspend 挂起 memory内存 */
static private int BackupBAK_CELL_SIZE = 250, BackupBAK_LIST_ROWS = 10; //后备队列
static private int Suspend_CELL_SIZE = 250, Suspend_LIST_ROWS = 10; //挂起队列
static private int Ready_CELL_SIZE = 200, Ready_LIST_ROWS = 6; //就绪队列
static private int Memory_CELL_SIZE = 200, Memory_LIST_ROWS = 4; //内存队列
the
size
of
the
Frame
主
面
板
static private int CPU_ROWS =3, CPU_COLS = 2; //CPU面板
static private int STATUS_ROWS = 7, STATUS_COLS = 45; //系统状态面板 private //设置时间片大小
private int systemStatus=0; //设置系统状态
int timeslice = 1;
0——系统预备状态,等待开始,1——系统运行状态,2——系统暂停状态
static private int TOTAL__TEXTFIELD_SIZE = 10; // Size total text field 记录各队列元素个数
private JList backupList, suspendList, readyList, memoryList; //各队列相对应的数组列表
// 进程添加框中的\添加至后备队列\,\添加至就绪队列\,\重置\
private JButton addToBAKButton, addToReadyButton, resetButton;
//就绪队列框中的\挂起\,挂起队列框中的\解挂\,\删除\
private JButton suspendButton, umountButton, removeButton;
//Status面板中的\启动系统\,\重置系统\帮助按钮 private
JButton
startButton,
pauseButton,
resetSyatemButton,helpButton;
//优先级和时间片单选钮及时间片显示框 private JRadioButton priorityJRB, timesliceJRB; private JLabel timesliceSizeLabel;
private JTextField timesliceJtf;
//后备面板、进程添加面板、挂起面板、内存面板 private JPanel backupBAKPanel, PCBItemPanel, suspendedPanel, memoryPanel;
//后备队列、挂起队列元素总数标签 private
JLabel
backupTotalLabel,
suspendTotalLabel;
//进程信息标签 进程编号PID,所需运行时间requiredTime,优先级priority,当前状态statues,内存中的基址base,所需内存大小limit
private JLabel PIDLabel, requiredTimeLabel, priorityLabel, statuesLabel, baseLabel, limitLabel; //后备队列、挂起队列元素总数文本框(不可编辑) private
JTextField
backupTotalTextField,
suspendTotalTextField;
//进程信息文本框 PID(可编辑),requiredTime(可编辑),priority(可编辑),status(不可编辑),base(不可编辑),limit(可编辑) private
JTextField
PIDTextField,
priorityTextField,
requiredTimeTextField,
statusTextField, baseTextField, limitTextField; //CPU状态显示文本域(不可编辑),status信息文