先来先服务问题java程序设计报告(3)

2025-04-30

(3)MyFrame.java清单 package 先来先服务;

import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image;

import java.awt.Transparency;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import java.util.Queue; import java.util.Random; import java.util.Stack;

import javax.swing.JButton; import javax.swing.JFrame;

import javax.swing.JInternalFrame;

public class MyFrame extends JFrame {

private JButton btnStart=new JButton(\开始\ private JButton btnClose=new JButton(\关闭\ private JButton btnReset=new JButton(\重置\ private JButton btnStop=new JButton(\暂停\ private JButton btnContinue=new JButton(\继续\

// public int moveX1=0,moveX2=0,moveX3=0;//分别表示小球圆心的横坐标 public int speed1,speed2,speed3,speed4;//分别设置三个小球的速度

public int []moveX=new int[4]; public int []speed=new int[4];

public int x;

public int finishnum=0; public int []num={0,0,0,0};

public Queue runQueue=new LinkedList();//表示正在运行的小球队列

public Queue waitQueue=new LinkedList();//定义就绪队列

MoveThread t=new MoveThread(0,this); MoveThread t1=new MoveThread(1,this);

MoveThread t2=new MoveThread(2,this); //创建三个线程,分别控制三个小球

MoveThread t3=new MoveThread(3, this);

private Image offScreenImg;//创建图像对象 private Graphics offScreenG;//创建画板对象

Random random=new Random(); public MyFrame(String title) {

super(title);

setSize(1000,600); setLocation(50,50);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

speed1=(random.nextInt(5)+1); do{

speed2=(random.nextInt(5)+1); }while(speed1==speed2); do{

speed3=(random.nextInt(5)+1);

}while(speed3==speed1||speed2==speed3); do {

speed4=(random.nextInt(5)+1);

}while(speed4==speed1||speed4==speed2||speed4==speed3);

speed[0]=speed1; speed[1]=speed2; speed[2]=speed3; speed[3]=speed4;

getContentPane().setLayout(null);

btnStart.setBounds(300,500,80,40); getContentPane().add(btnStart); btnStart.setVisible(true);

btnClose.setBounds(400,500,80,40); getContentPane().add(btnClose); btnClose.setVisible(true);

btnReset.setBounds(500,500,80,40); getContentPane().add(btnReset);

btnReset.setVisible(true);

btnStart.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub try {

t.start(); t1.start(); t2.start(); t3.start();

} catch (Exception e) {

// TODO: handle exception } } });

btnClose.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub System.exit(0);//退出程序 } });

btnReset.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub moveX[0]=0; moveX[1]=0; moveX[2]=0; moveX[3]=0; finishnum=0;

num[0]=num[1]=num[2]=num[3]=0; while (runQueue.size()!=0) { runQueue.remove(); }

while(waitQueue.size()!=0) {

waitQueue.remove();

} } }); }

public void paint(Graphics g) {

offScreenImg=this.createImage(1000,500); offScreenG=offScreenImg.getGraphics();

//绘制就绪队列矩形

offScreenG.setColor(Color.yellow); offScreenG.fillRect(500, 50,80, 450); offScreenG.setColor(Color.gray);

offScreenG.setFont(new Font(\楷体\ offScreenG.drawString(\就绪队列\

//绘制CPU矩形

offScreenG.setColor(Color.cyan);

offScreenG.fillRect(580, 50,200, 450); offScreenG.setColor(Color.gray);

offScreenG.setFont(new Font(\楷体\ offScreenG.drawString(\

offScreenG.setColor(Color.black);

Font font=new Font(\楷体\ offScreenG.setFont(font);

offScreenG.drawString(\ 刘克 软件二班\

//绘制四个小球

offScreenG.setColor(Color.blue);

offScreenG.fillOval(10+moveX[0], 100, 80, 80); offScreenG.setColor(Color.red);

offScreenG.fillOval(10+moveX[1], 200, 80, 80); offScreenG.setColor(Color.green);

offScreenG.fillOval(10+moveX[2], 300, 80, 80); offScreenG.setColor(Color.gray);

offScreenG.fillOval(10+moveX[3], 400, 80, 80);

btnStart.repaint(); btnClose.repaint(); btnReset.repaint();

g.drawImage(offScreenImg,0,0,this);//输出图像

20, 70); }

public void move(int i)//i为小球编号,n为移动速度 {

if(finishnum==3&&moveX[i]<770) {moveX[i]++;} else {

if(moveX[i]<490) {

moveX[i]+=speed[i]; }

else if(runQueue.size()==0) {

runQueue.offer(i);//把i压入队列 }

else if ((x=runQueue.peek())==i&&moveX[i]<770)//如果运行队列中的元素就是它自己,继续行进 {

moveX[i]++; }

else if(num[i]==0) {

waitQueue.offer(i);//如果不是它自己则进入就绪队列 num[i]++;//保障只进一次队 }

if(moveX[i]==770) {

moveX[i]++; finishnum++;

if(runQueue.size()!=0)

runQueue.remove();//到达终点之后则出运行队列

if(waitQueue.size()!=0)//如果就绪队列之中有值,则出队 {

runQueue.offer(waitQueue.poll()); } } } } }


先来先服务问题java程序设计报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:某镇武装工作调研报告

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219