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

📄 displaypanel.java

📁 高速公路客运仿真
💻 JAVA
字号:
package Emluator;
import javax.swing.*;
import java.awt.*;

/**
 * <p>Title:DisplayPanel </p>
 * <p>Description: 以动画的形式显示正在行驶的车辆的状态</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: 西安电子科技大学计算机学院研03软件与理论</p>
 * @author 任声骏
 * @version 1.0
 */

public class DisplayPanel extends JPanel{
  private int pro=4;//公里与像素的比例
  private int stationPos[]={0,24,45,107,128,152,174};//各站的坐标
  private String stationName[]={"宝鸡站","虢镇","蔡家坡","武功","兴平","咸阳","西安站"};//各站的站名

  public DisplayPanel() {
  }
  //重载JPanel中的paintComponent函数,实现行驶车辆图形界面的刷新
  public void paintComponent(Graphics comp){
    super.paintComponent(comp);
    Graphics2D comp2D=(Graphics2D)comp;
    comp2D.setColor(Color.white);
    comp2D.fillRect(0,0,800,200);
    comp2D.setColor(Color.blue);
    //画出各站的位置和站名
    for(int i=0;i<7;i++){
      comp2D.draw3DRect(25+pro*stationPos[i],200,8,8,true);
      comp2D.drawString(stationName[i],15+pro*stationPos[i],220);
    }
    Toolkit kit=Toolkit.getDefaultToolkit();
    Image iveco=kit.getImage("bus.gif");
    Image volvo=kit.getImage("car.gif");
    //画出正开往宝鸡方向的车辆的位置,并标出车牌号
    if(Emluator.carMovingToBJ!=null){
      String temp;
      if (Emluator.carMovingToBJ.size() > 0) {
        //对正开往宝鸡方向的车辆队列中的所有车辆,根据相应的车辆类型选择相应的图形分别绘制车辆的位置
        for (int i = 0; i < Emluator.carMovingToBJ.size(); i++) {
          int x = 25 +(int) ( (174 - ( (Vehicle) Emluator.carMovingToBJ.get(i)).getDisAwayBegin()) *pro);
          temp = ( (Vehicle) Emluator.carMovingToBJ.get(i)).getLicenseNumber();
          //如果车辆是Iveco类型的,用图形iveco表示
          if ( ( (Vehicle) Emluator.carMovingToBJ.get(i)).getClass().getName().equals("Emluator.Iveco")) {
            //comp2D.drawImage(iveco, x, 170, this);
            comp2D.setColor(Color.black);
            comp2D.draw3DRect(x,170,20,5,true);
            comp2D.drawString(temp, x, 168);
          } else {//如果车辆是Volvo类型的,用图形volvo表示
            //comp2D.drawImage(volvo, x, 140, this);
            comp2D.setColor(Color.blue);
            comp2D.draw3DRect(x,140,20,10,true);
            comp2D.drawString(temp, x, 138);
          }
        }
      }
    }
    //画出正开往西安方向的车辆的位置,并标出车牌号
      if(Emluator.carMovingToXN!=null){
        String temp;
        if(Emluator.carMovingToXN.size()>0){
        //对正开往宝鸡方向的车辆队列中的所有车辆,根据相应的车辆类型选择相应的图形分别绘制车辆的位置
          for (int i = 0; i < Emluator.carMovingToXN.size(); i++) {
            int x=25+(int)(((Vehicle)Emluator.carMovingToXN.get(i)).getDisAwayBegin()*pro)-20;
            temp=((Vehicle)Emluator.carMovingToXN.get(i)).getLicenseNumber();
            //如果车辆是Iveco类型的,用图形iveco表示
            if(((Vehicle)Emluator.carMovingToXN.get(i)).getClass().getName().equals("Emluator.Iveco")){
              comp2D.setColor(Color.black);
              comp2D.drawString(temp,x,68);
              comp2D.draw3DRect(x,70,20,5,true);
              //comp2D.drawImage(iveco, x, 70, this);
            }
            else {//如果车辆是Volvo类型的,用图形volvo表示
              //comp2D.drawImage(volvo, x, 40, this);
              comp2D.setColor(Color.blue);
              comp2D.draw3DRect(x,40,20,10,true);
              comp2D.drawString(temp,x,38);
            }
        }
      }
    }
  }

}

⌨️ 快捷键说明

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