java吧 关注:1,257,863贴子:12,750,020
  • 1回复贴,共1

把背景和按扭换一下.急,谢谢了.

只看楼主收藏回复

package xiaohu;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
public class FCFS extends JFrame implements ActionListener
{
Vector workVector;
int status[]={0,0,0,0,0};
String workname[]={"作业名","提交时刻","要求运行时间","运行时刻","完成时刻","周转时间","带权周转时间"};
String worktable[][]=new String[5][7];
JTable workjtable;
JScrollPane messageScrollPane;
JToolBar toolBar = new JToolBar();
JButton InputButton;
JButton FCFSButton;
JButton exitButton;
JTextField show;
JTextArea source;
public FCFS()
{
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
workVector=new Vector();
InputButton=new JButton("添加作业");
FCFSButton = new JButton("FCFS算法");
exitButton = new JButton("退出");
FCFSButton.setToolTipText("FCFS算法");
toolBar.add(InputButton);
toolBar.add(FCFSButton);
toolBar.add(exitButton);
contentPane.add(toolBar, BorderLayout.NORTH);
InputButton.addActionListener(this);
FCFSButton.addActionListener(this);
exitButton.addActionListener(this);;
source=new JTextArea(5,30);
contentPane.add(source, BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300,300);
this.setLocation(100,300);
this.setResizable(false);
this.setTitle("FCFS算法");
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
Object obj = e.getSource();
if (obj ==InputButton)
{
String stringnum;
Work work=new Work();
stringnum=JOptionPane.showInputDialog(this,"作业名、提交时刻、要求运行时间").trim();
StringTokenizer st0 = new StringTokenizer(stringnum);
System.out.println(stringnum);
if(st0.hasMoreTokens())
{
work.workname=(String)st0.nextToken();
source.append("作业: "+work.workname);
}
if(st0.hasMoreTokens())
{
work.refertime=Double.valueOf(st0.nextToken()).doubleValue();
source.append("提交时间为: "+work.refertime);
}
if(st0.hasMoreTokens())
{
work.needtime=Double.valueOf(st0.nextToken()).doubleValue();
source.append("要求运行时间为: "+work.needtime);
}
source.append("\n");
workVector.add(work);
}



1楼2011-09-23 08:36回复

    if ( obj == FCFSButton)
    {
    for(int a=0;a<5;a++)
    {
    status[a]=0;
    }
    int i=0;
    double minrefertime,finishtime=0,T=0,sunT=0,sunW=0,W=0;
    Work work=new Work();
    Work work1=new Work();
    Work work2=new Work();
    String msg;
    while(i<workVector.size())
    {
    if(status[i]==0)
    {
    work=(Work)workVector.elementAt(i);
    worktable[i][0]=String.valueOf(work.workname);
    worktable[i][1]=String.valueOf(work.refertime);
    worktable[i][2]= String.valueOf(work.needtime);
    minrefertime=work.refertime;
    int j=0,k=i;
    while(j<workVector.size()) //找出最先到达的进程
    {
    work1=(Work)workVector.elementAt(j);//指定索引处
    if(minrefertime>work1.refertime&&status[j]==0)
    {
    minrefertime=work1.refertime;
    k=j;
    }
    j++;
    }
    System.out.println(k);
    work2=(Work)workVector.elementAt(k); //为最先到达的线程分配资源
    if(work2.refertime<finishtime)
    {
    worktable[k][3]=String.valueOf(finishtime);
    worktable[k][4]=String.valueOf(work2.needtime+finishtime);
    worktable[k][5]=String.valueOf(work2.needtime+finishtime-work2.refertime); //周转时间
    worktable[k][6]=String.valueOf((work2.needtime+finishtime-work2.refertime)/work2.needtime); //带权周转时间
    finishtime=work2.needtime+finishtime;
    }
    else //第一个执行的线程作业
    {
    worktable[k][3]=String.valueOf(work2.refertime);
    worktable[k][4]=String.valueOf(work2.needtime+work2.refertime);
    worktable[k][5]=String.valueOf(work2.needtime); //第一个线程周转时间
    worktable[k][6]=String.valueOf((work2.needtime)/work2.needtime); //第一个线程带权周转时间
    finishtime=work2.needtime+work2.refertime;
    }
    status[k]=1;
    }
    i++;
    }
    i=0;
    while(i<workVector.size())
    {
    sunT=sunT+Double.parseDouble(worktable[i][5]);
    sunW=sunW+Double.parseDouble(worktable[i][6]);
    i++;
    }
    T=sunT/i;
    W=sunW/i;
    msg="平均周转时间T="+T+"时间单位"+","+"平均带权周转时间W="+W;
    workjtable=new JTable(worktable,workname);
    show=new JTextField(30);
    show.setText(msg);
    messageScrollPane = new JScrollPane(workjtable,
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    messageScrollPane.setPreferredSize(new Dimension(400, 101));
    messageScrollPane.revalidate();
    JFrame frame=new JFrame();
    frame.setSize(400,180);
    frame.setLocation(200,300);
    frame.setTitle("FCFS调度");
    frame.setLayout(new BorderLayout());
    frame.add(messageScrollPane,BorderLayout.NORTH);
    frame.add(show,BorderLayout.CENTER);
    frame.setVisible(true);
    }
    if ( obj == exitButton)
    {
    int j=JOptionPane.showConfirmDialog(this,"停止服务?","停止服务",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);
    if(j==JOptionPane.YES_OPTION)
    {
    System.exit(0);
    }
    }
    }
    public void setFromBackColor(){
    JPanel contenPane = new JPanel();
    contenPane.setBackground(new Color(102,204,255));
    setContentPane(contenPane);
    }
    public static void main(String arg[])
    {
    FCFS FCFS1=new FCFS();
    }
    class Work
    {
    String workname=null;
    double refertime=100;
    double needtime=0;
    double starttime=0;
    double finishtime=0;
    double alltime=0;
    double ratealltime=0;
    }
    }
    


    2楼2011-09-23 08:36
    回复