📄 os.java
字号:
package OSpackage;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.table.*;
public class Os extends JFrame implements ActionListener,ItemListener{
static JFrame frame1,frame2;
private JLabel label[];
private JLabel labelk;
private JTextField fieldk;
private JTextField field[];
TJ tj[];
TJ tj1;
static int first=1,way=0,way2=0,aj=0,bj=0;
int systemTime=0;
static float result1=0,result2=0;
JRadioButton jb1,jb2,jb3;
ButtonGroup BG;
int a[],b[];
private JButton buttonk,button[];
private int K;
static int m=1;
private JTable table;
JScrollPane panel_2;
DefaultTableModel modle;
static Vector rowData,columnNames ,work,job,current,current1;
public Os(){
new WelcomeWindow("E:/myjava/3.JPG",10000000);
frame1=new JFrame("作业总数");
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
buttonk=new JButton(" O K ");
buttonk.addActionListener(this);
labelk=new JLabel(" 请输入总的作业个数:",SwingConstants.CENTER);
fieldk=new JTextField(10);
frame1.setLayout(new FlowLayout(FlowLayout.CENTER));
labelk.setForeground(Color.RED);
labelk.setFont(new Font("TimeRoman",Font.ITALIC,18));
frame1.add(labelk);
frame1.add(fieldk);
frame1.add(buttonk);
frame1.setSize(200,140);
Dimension frame1Size=frame1.getPreferredSize();
System.out.println(screenSize);
System.out.println(frame1Size);
frame1.setLocation( screenSize.width/2-(100),screenSize.height/2-(70));
frame2=new JFrame("作业信息");
label=new JLabel[8];
field=new JTextField[8];
label[0]=new JLabel("请在文本框中输入信息,并点击提交按钮",JLabel.CENTER);
label[0].setForeground(Color.RED);
label[0].setFont(new Font("TimeRoman",Font.ITALIC,30));
Container c=frame2.getContentPane();
JPanel lowerPanel=new JPanel(new FlowLayout(FlowLayout.CENTER));
JPanel centerPanel=new JPanel(new FlowLayout(FlowLayout.LEFT));
c.setLayout(new GridLayout(4,1));
lowerPanel.add(label[0]);
frame2.setLocation( screenSize.width/2-(300),screenSize.height/2-(150));
frame2.add(lowerPanel);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setResizable(false);
jb1=new JRadioButton("先来先服务",false);
jb1.addItemListener(this);
jb2=new JRadioButton("短作业优先",false);
jb2.addItemListener(this);
jb3=new JRadioButton("高响应比优先",false);
jb3.addItemListener(this);
BG=new ButtonGroup();
BG.add(jb1);
BG.add(jb2);
BG.add(jb3);
lowerPanel.add(jb1);
lowerPanel.add(jb2);
lowerPanel.add(jb3);
frame2.setSize(600,400);
lowerPanel.add(new JLabel(" "));
label[2]=new JLabel(" 作业提交时间:");
label[2].setFont(new Font("TimeRoman",Font.ITALIC,20));
centerPanel.add(label[2]);
field[1]=new JTextField(10);
field[1].setForeground(Color.RED);
centerPanel.add(field[1]);
label[2]=new JLabel(" 预计运行时间:");
label[2].setFont(new Font("TimeRoman",Font.ITALIC,20));
centerPanel.add(label[2]);
frame2.add(centerPanel);
field[2]=new JTextField(10);
field[2].setForeground(Color.RED);
centerPanel.add(field[2]);
button=new JButton[6];
centerPanel.add(new JLabel(" "));
button[0]=new JButton("提 交");
button[0].addActionListener(this);
button[0].setFont(new Font("TimeRoman",Font.ITALIC,20));
centerPanel.add(button[0]);
centerPanel.add(new JLabel(" "));
button[1]=new JButton("取 消");
button[1].addActionListener(this);
button[1].setFont(new Font("TimeRoman",Font.ITALIC,20));
centerPanel.add(button[1]);
job=new Vector(100);
current=new Vector(100);
current1=new Vector(100);
rowData=new Vector(100);
columnNames=new Vector(100);
work=new Vector(100);
work.addElement("作业号");
work.addElement("提交时间");
work.addElement("预计运行时间");
columnNames.addElement("调度次序");
columnNames.addElement("作业号");
columnNames.addElement("调度时间");
columnNames.addElement("周转时间");
columnNames.addElement("带权周转时间");
modle= new DefaultTableModel(rowData,columnNames);
modle.setDataVector(rowData,work);
table=new JTable(modle);
table.setFont(new Font("TimeRoman",Font.ITALIC,17));
table.setForeground(Color.red);
table.setRowHeight(25);
panel_2= new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel_2.setBorder(BorderFactory.createLineBorder(Color.RED));
frame2.add(panel_2);
JPanel lastPanel=new JPanel(new FlowLayout());
c.add(lastPanel);
button[2]=new JButton("显 示");
button[2].setFont(new Font("TimeRoman",Font.ITALIC,20));
button[2].addActionListener(this);
lastPanel.add(button[2]);
lastPanel.add(new JLabel(" "));
button[4]=new JButton(" N E X T ");
button[4].setFont(new Font("TimeRoman",Font.ITALIC,20));
button[4].addActionListener(this);
lastPanel.add(button[4]);
lastPanel.add(new JLabel(" "));
button[3]=new JButton("打 开");
button[3].setFont(new Font("TimeRoman",Font.ITALIC,20));
button[3].addActionListener(this);
lastPanel.add(button[3]);
label[3]=new JLabel(" 平均周转时间 ");
label[3].setFont(new Font("TimeRoman",Font.ITALIC,20));
lastPanel.add(label[3]);
field[3]=new JTextField(10);
field[3].setForeground(Color.RED);
field[3].setEditable(false);
lastPanel.add(field[3]);
label[4]=new JLabel(" 平均带权周转时间 ");
label[4].setFont(new Font("TimeRoman",Font.ITALIC,20));
lastPanel.add(label[4]);
field[4]=new JTextField(10);
field[4].setForeground(Color.RED);
field[4].setEditable(false);
lastPanel.add(field[4]);
}
/******************************************/public //定义一个内部类
class WelcomeWindow extends JWindow{//welcome window.
public WelcomeWindow(String filename,int waitTime){
//super(f);
JLabel l = new JLabel(new ImageIcon(filename));//image add to label l
getContentPane().add(l, BorderLayout.CENTER);
pack();
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = l.getPreferredSize();
setLocation(screenSize.width/2 - (labelSize.width/2),screenSize.height/2 - (labelSize.height/2));
//press the welcome window,it will be closed.
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
setVisible(false);
dispose();
frame1.setVisible(true);
}
});
final int pause = waitTime;
final Runnable closerRunner = new Runnable(){
public void run(){
setVisible(false);
dispose();
}
};
Runnable waitRunner = new Runnable(){
public void run(){
try{
Thread.sleep(pause);
//invoke closerRunner and wait for waitRunner run.
SwingUtilities.invokeAndWait(closerRunner);
}catch(Exception e){
e.printStackTrace();
// Catch InvocationTargetException
// Catch InterruptedException
}
}
};
setVisible(true);
Thread waitThread = new Thread(waitRunner, "SplashThread");
waitThread.start();
}
}
public void Remove()//移除原有的,用于刷新表格 不知道为什么总是有越界的错误
{
int j= modle.getRowCount();
do{
modle.removeRow(j-1);
j--;
}while(modle.getRowCount()!=0);
}
public int zhuanD(String a)//转化为分钟进行运算
{
int hour=Integer.parseInt(a.substring(0,2))*60;
int minute=Integer.parseInt(a.substring(2,4));
return hour+minute;
}
public String zhuanH(int a)//转化为时间
{
String minute;
String hour=a/60+"";
if(a%60==0)
minute=a%60+"0";
else
minute=a%60+"";
return hour+":"+minute;
}
public TJ duixiang(TJ tj[],int a)
{
for(int i=0;i<tj.length;i++)
{
if(Integer.parseInt(tj[i].getTime())==a)
return tj[i];
}
return null;
}
public TJ duixiang_b(TJ tj[],int a)
{
for(int i=0;i<tj.length;i++)
{
if(Integer.parseInt(tj[i].getRuntime())==a)
return tj[i];
}
return null;
}
public void pai(TJ tj[],int a[],int b[])//依据调度时间和到达时间排序
{
int i,k,tempa,tempb;
for(int j=0;j<tj.length;j++)
{
a[j]=Integer.parseInt(tj[j].getTime());
b[j]=Integer.parseInt(tj[j].getRuntime());
}
for(i=1;i<=a.length;i++)
for(k=0;k<=a.length-i-1;k++)
{
if(a[k]>a[k+1])
{
tempa=a[k];
a[k]=a[k+1];
a[k+1]=tempa;
}
if(a[k]==a[k+1])
{
int h1=Integer.parseInt(duixiang(tj,a[k]).getTime());
int h2=Integer.parseInt(duixiang(tj,a[k+1]).getTime());
if(h1>h2)
{
String aa=duixiang(tj,a[k]).getTime();
duixiang(tj,a[k]).setRuntime(duixiang(tj,a[k+1]).getTime());
duixiang(tj,a[k]).setRuntime(aa);
}
}
}
{
for(i=1;i<=b.length;i++)
for(k=0;k<=b.length-i-1;k++)
if(b[k]>b[k+1])
{
tempb=b[k];
b[k]=b[k+1];
b[k+1]=tempb;
}
}
for(i=0;i<b.length;i++)
{
current.addElement(duixiang_b(tj,b[i]));
}
current1=current;
}
/*public void result(int a[])
{
float dai;
float zhou;
for(int j=0;j<a.length;j++)
{
tj1=duixiang(tj,a[j]);//得到当前的符合条件的对象
if(j==0)
{
String zh1=tj1.getRuntime()+"分钟";
Object data[]={
j+1,tj1.getM(),zhuanH(zhuanD(tj1.getTime()))
,zh1,1};
modle.addRow(data);
systemTime=systemTime+zhuanD(tj1.getTime())+
Integer.parseInt(tj1.getRuntime());//系统当前时间为多少
result2=1;
result1=Integer.parseInt(tj1.getRuntime());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -