JAVA小程序开发之模拟电梯APP(代码优化)

来源:互联网 发布:js根据日期计算星期几 编辑:程序博客网 时间:2024/06/07 07:12

今年1月,自己独立弄了个模拟电梯APP,由于当时写的时间仓促,一些代码命名、注释和行间距,没有好好控制,除了自己别人很难看得懂。 

下午难得有时间,于是把这些缺陷统统优化了一遍,这也是在告诉自己,以后写代码时,一定得规范,让别人能容易看得懂,总之,勉励自己写出高质量的代码!

package com.sinolife.icms.grp.test;import java.awt.Color;import java.awt.Component;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;  /** * Init add on 20140105 * @author Mars *  * Modified by Mars on 20140309, target: Code and Conments Enhancement * */public class SimulatedElevator {public static void main(String[] args){seFrame seFrame = new seFrame();seFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);seFrame.setVisible(true); }}class RunElevator implements Runnable{private Elevator elevator;private Component component;public RunElevator(Elevator elevator,Component component){this.elevator = elevator;this.component = component;} public void run(){while (true){try {elevator.move();component.repaint();if(elevator.currentFloor == 1){elevator.isAllowRunInSide = true;}Iterator iteratorOut = elevator.arrayClickOutSide.iterator(); int k;while(iteratorOut.hasNext()){k = (Integer) iteratorOut.next(); if(elevator.currentDistance == k){elevator.isRun = false;} }Iterator iteratorIn = elevator.arrayClickInSide.iterator();  while(iteratorIn.hasNext()){k = (Integer) iteratorIn.next();  if(elevator.currentDistance == k){elevator.isRun = false;iteratorIn.remove();elevator.isAllowRunInSide = true;}}Iterator iteratorRunning = elevator.arrayClickRunning.iterator();  while(iteratorRunning.hasNext()){k = (Integer) iteratorRunning.next(); if(elevator.currentDistance == k){elevator.isRun = false;iteratorRunning.remove();}}// 电梯每0.5秒移动一次Thread.sleep(elevator.speed);} catch (Exception e){}}}}class StatusRunnable implements Runnable{ private JLabel labFloor;private JLabel labStatus;private Elevator elevator;public StatusRunnable(Elevator elevator,JLabel labFloor,JLabel labStatus){this.labFloor = labFloor;this.labStatus = labStatus;this.elevator = elevator;}public void run(){String status = "";while(true){switch(elevator.derection){case 2:status = "向   上";break;case 4:status = "向   下";break;default:status = "向   上";break;}if(elevator.isRun == false){status = "停   止";}labStatus.setText(status);labFloor.setText("" + elevator.currentFloor);}}} class Elevator{protected boolean isRun; protected ArrayList<Node> body; protected Set arrayClickOutSide;protected Set arrayClickInSide;protected Set arrayClickRunning;protected Node food; protected int derection; protected int score;protected int status;protected int speed;protected int distance;protected int currentFloor;protected int targetFloor;protected int interrupDistance;protected int currentDistance;public static final int SLOW = 500;public static final int MID = 300;public static final int FAST = 100;public static final int RUNNING = 1;public static final int PAUSED = 2;public static final int GAMEOVER = 3;public static final int UP = 2;public static final int DOWN = 4;public static final int FLOOR_1 = 1;public static final int FLOOR_2 = 2;public static final int FLOOR_3 = 3;public static final int FLOOR_4 = 4;public static final int FLOOR_5 = 5;public static final int FLOOR_6 = 6;boolean isTurnDown;boolean isTurnUp;boolean isFirstMoving;boolean isClick;boolean isAllowRunOutSide;boolean isAllowRunInSide;boolean isInterrupt;boolean isClickInside;boolean isClickClose;protected String moveStatus;public Elevator(){speed = Elevator.SLOW;score = 0;isRun = false;status = Elevator.PAUSED;derection = Elevator.UP;distance = 460;// 初始距离    isTurnDown = true;// 是否向下移动isTurnUp = true;// 是否向上移动isFirstMoving = true;// 首次移动isClick = true;isAllowRunOutSide =  false;isAllowRunInSide =  true;isInterrupt = false;isClickInside = false;isClickClose = false;moveStatus = "free";targetFloor = 1;currentFloor = 1;currentDistance = 480;interrupDistance = 0;arrayClickOutSide = new TreeSet();arrayClickInSide = new TreeSet();arrayClickRunning = new TreeSet();// 初始化电梯厢,由四块组成body = new ArrayList<Node>();body.add(new Node(0,400));body.add(new Node(0,420));body.add(new Node(0,440));body.add(new Node(0,460)); } public synchronized void move(){ // 电梯运行状态控制 if(isRun){ Node node = body.get(0);int X = node.x;int Y = node.y;// derection == 2向上运行,否则向下运行if(derection == 2){moveStatus = "UP";isTurnUp = true;if(isFirstMoving){Y -= Node.H;}else{if(isTurnDown){body.clear();body.add(new Node(0,Y-60));body.add(new Node(0,Y-40));body.add(new Node(0,Y-20));body.add(new Node(0,Y)); node = body.get(0);isTurnDown = false;}else{node = body.get(0);}Y = node.y;System.out.println(Y+"  Y===.");Y -= Node.H;}}else{moveStatus = "DOWN";isFirstMoving = false;isTurnDown = true;if(isTurnUp){body.clear();body.add(new Node(0,Y+60));body.add(new Node(0,Y+40));body.add(new Node(0,Y+20));body.add(new Node(0,Y)); node = body.get(0);isTurnUp = false;}else{node = body.get(0);}Y = node.y;Y += Node.H;}// 根据运行距离,显示牌显示当前电梯所在楼层数switch(Y){case 480:currentFloor = 1;break;case 380:currentFloor = 2;break;case 360:currentFloor = 2;break;case 340:currentFloor = 2;break;case 320:currentFloor = 2;break;case 300:currentFloor = 3;break;case 280:currentFloor = 3;break;case 260:currentFloor = 3;break;case 240:currentFloor = 3;break;case 220:currentFloor = 4;break;case 200:currentFloor = 4;break;case 180:currentFloor = 4;break;case 160:currentFloor = 4;break;case 140:currentFloor = 5;break;case 120:currentFloor = 5;break;case 100:currentFloor = 5;break;case 80:currentFloor = 5;break;case 60:currentFloor = 6;break;case 40:currentFloor = 6;break;case 20:currentFloor = 6;break;case 0:currentFloor = 6;break;}System.out.println("电梯目前所在楼层,第  "+currentFloor+" 层");currentDistance = Y;body.add(0,new Node(X,Y));body.remove(body.size() - 1);//判断电梯运行轨迹与控制值相同,否则电梯停止运行if(Y == distance){isClick = true;isRun = false;currentFloor = targetFloor;isAllowRunOutSide = false; arrayClickOutSide.clear();arrayClickInSide.clear();} }}}class Node{protected static final int W = 80;protected static final int H = 20;int x;int y;public Node(int x,int y){this.x = x;this.y = y;}} class ElevatorPanel extends JPanel{Elevator elevator;public ElevatorPanel(Elevator elevator){this.elevator = elevator;}public void paintComponent(Graphics g){super.paintComponent(g);/** * 电梯本体 * 这里相当于画四(elevator.body.size())块蛇本身,3*20*20 */Node node = null;g.setColor(Color.ORANGE);for(int i = 0;i < elevator.body.size();i++){node = elevator.body.get(i);g.fillRect(node.x, node.y, node.W, node.H); }}}class seFrame extends JFrame{private JButton btnUp1F;// 一层电梯呼叫按钮-上private JButton btnDown1F;// 一层电梯呼叫按钮-下private JButton btnUp2F;// 二层电梯呼叫按钮-上private JButton btnDown2F;// 二层电梯呼叫按钮-下private JButton btnUp3F;// 三层电梯呼叫按钮-上private JButton btnDown3F;// 三层电梯呼叫按钮-下private JButton btnUp4F;// 四层电梯呼叫按钮-上private JButton btnDonw4F;// 四层电梯呼叫按钮-下private JButton btnUp5F;// 五层电梯呼叫按钮-上private JButton btnDown5F;// 五层电梯呼叫按钮-下private JButton btnUp6F;// 六层电梯呼叫按钮-上private JButton btnDown6F;// 六层电梯呼叫按钮-下private JButton btnNum1;// 电梯内按钮号码-1private JButton btnNum2;// 电梯内按钮号码-2private JButton btnNum3;// 电梯内按钮号码-3private JButton btnNum4;// 电梯内按钮号码-4private JButton btnNum5;// 电梯内按钮号码-5private JButton btnNum6;// 电梯内按钮号码-6private JButton btnClose;// 电梯内关门按钮-关门private JLabel lab1F;// 各楼层数字-1private JLabel lab2F;// 各楼层数字-2private JLabel lab3F;// 各楼层数字-3private JLabel lab4F;// 各楼层数字-4private JLabel lab5F;// 各楼层数字-5private JLabel lab6F;// 各楼层数字-6private JLabel labDisplay;// 显示牌private JLabel labFloor;// 显示牌-楼层private JLabel labStatus;// 显示牌-状态(上或下)private Elevator elevator;// 电梯public seFrame(){// 页面对象初始化init();// 动作监控,响应方法ActionListener seActionListener = new ActionListener(){public void actionPerformed(ActionEvent e){Node node = elevator.body.get(0);if(e.getSource() == btnUp1F){if(elevator.arrayClickInSide.size() != 0){elevator.isAllowRunOutSide = true;}if(elevator.isAllowRunOutSide){// 校验电梯与触发事件为同一层楼if(node.y == 400 || node.y == 460){elevator.isRun = false;}else{elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.derection = Elevator.DOWN; elevator.distance = 460;elevator.targetFloor = 1;}}}if(e.getSource() == btnUp2F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickOutSide.add(320);}else{if(elevator.isAllowRunOutSide){// 校验电梯与触发事件为同一层楼if(node.y == 380 || node.y == 320){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor > 2){elevator.derection = Elevator.DOWN;elevator.isClick = false;elevator.distance = 380;}else{elevator.derection = Elevator.UP; elevator.distance = 320;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 2;}}// 电梯外按钮点击数累加if(elevator.targetFloor >= 2 && elevator.currentFloor <= 2&& elevator.distance < 320){elevator.arrayClickOutSide.add(320);}}}if(e.getSource() == btnDown2F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickOutSide.add(380);}else{if(elevator.isAllowRunOutSide){// 校验电梯与触发事件为同一层楼if(node.y == 380 || node.y == 320){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor < 2){elevator.derection = Elevator.UP;elevator.isClick = false;elevator.distance = 320;}else{elevator.derection = Elevator.DOWN; elevator.distance = 380;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 2;}}// 电梯外按钮点击数累加if(elevator.targetFloor <= 2 && elevator.currentFloor >= 2&& elevator.distance > 380){elevator.arrayClickOutSide.add(380);}}}if(e.getSource() == btnUp3F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickRunning.add(240);}if(elevator.isAllowRunOutSide){// 校验电梯与触发事件为同一层楼if(node.y == 300 || node.y == 240){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor > 3){elevator.derection = Elevator.DOWN;elevator.isClick = false;elevator.distance = 300;}else{elevator.derection = Elevator.UP; elevator.distance = 240;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 3;}}// 电梯外按钮点击数累加if(elevator.targetFloor >= 3 && elevator.currentFloor <= 3&& elevator.distance < 240){elevator.arrayClickOutSide.add(240);}}if(e.getSource() == btnDown3F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickRunning.add(300);}if(elevator.isAllowRunOutSide){//校验电梯与触发事件为同一层楼if(node.y == 300 || node.y == 240){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor < 3){elevator.derection = Elevator.UP;elevator.isClick = false;elevator.distance = 240;}else{elevator.derection = Elevator.DOWN; elevator.distance = 300;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 3;}}//电梯外按钮点击数累加if(elevator.targetFloor <= 3 && elevator.currentFloor >= 3&& elevator.distance > 300){elevator.arrayClickOutSide.add(300);}}if(e.getSource() == btnUp4F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickRunning.add(160);}if(elevator.isAllowRunOutSide){//校验电梯与触发事件为同一层楼if(node.y == 160 || node.y == 220){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor > 4){elevator.derection = Elevator.DOWN;elevator.isClick = false;elevator.distance = 220;}else{elevator.derection = Elevator.UP; elevator.distance = 160;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 4;}}//电梯外按钮点击数累加if(elevator.targetFloor >= 4 && elevator.currentFloor <= 4&& elevator.distance < 160){elevator.arrayClickOutSide.add(160);}}if(e.getSource() == btnDonw4F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickRunning.add(220);}if(elevator.isAllowRunOutSide){//校验电梯与触发事件为同一层楼if(node.y == 160 || node.y == 220){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor < 4){elevator.derection = Elevator.UP;elevator.isClick = false;elevator.distance = 160;}else{elevator.derection = Elevator.DOWN; elevator.distance = 220;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 4;}}//电梯外按钮点击数累加if(elevator.targetFloor <= 4 && elevator.currentFloor >= 4&& elevator.distance > 220){elevator.arrayClickOutSide.add(220);}}if(e.getSource() == btnUp5F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickOutSide.add(80);}if(elevator.isAllowRunOutSide){//校验电梯与触发事件为同一层楼if(node.y == 80 || node.y == 140){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor > 5){elevator.derection = Elevator.DOWN;elevator.isClick = false;elevator.distance = 140;}else{elevator.derection = Elevator.UP; elevator.distance = 80;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 5;}}//电梯外按钮点击数累加if(elevator.targetFloor >= 5 && elevator.currentFloor <= 5&& elevator.distance < 80){elevator.arrayClickOutSide.add(80);}}if(e.getSource() == btnDown5F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.arrayClickOutSide.add(140);}if(elevator.isAllowRunOutSide){//校验电梯与触发事件为同一层楼if(node.y == 80 || node.y == 140){elevator.isRun = false;}else{if(elevator.isClick && elevator.targetFloor < 5){elevator.derection = Elevator.UP;elevator.isClick = false;elevator.distance = 80;}else{elevator.derection = Elevator.DOWN; elevator.distance = 140;}elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.targetFloor = 5;}}//电梯外按钮点击数累加if(elevator.targetFloor <= 5 && elevator.currentFloor >= 5&& elevator.distance > 140){elevator.arrayClickOutSide.add(140);}}if(e.getSource() == btnDown6F){if(elevator.arrayClickInSide.size() != 0){elevator.arrayClickRunning.clear();elevator.isAllowRunOutSide = true;}if(elevator.isAllowRunOutSide){//校验电梯与触发事件为同一层楼if(node.y == 0){elevator.isRun = false;}else{elevator.isRun = true;elevator.isAllowRunOutSide = false;elevator.derection = Elevator.UP; elevator.distance = 0;elevator.targetFloor = 6;}}}if(e.getSource() == btnNum1){if(elevator.isAllowRunInSide){if(elevator.currentFloor > 1){elevator.derection = Elevator.DOWN;elevator.arrayClickInSide.add(460);elevator.isAllowRunInSide = false;elevator.isAllowRunOutSide = false;elevator.targetFloor = 1;}}}if(e.getSource() == btnNum2){if(elevator.isAllowRunInSide){if(elevator.currentFloor != 2){if(elevator.currentFloor < 2){elevator.derection = Elevator.UP;elevator.arrayClickInSide.add(320);}else{elevator.derection = Elevator.DOWN;elevator.arrayClickInSide.add(380);}elevator.isAllowRunInSide = false;elevator.isAllowRunOutSide = false;elevator.targetFloor = 2;}}}if(e.getSource() == btnNum3){ if(elevator.isAllowRunInSide){if(elevator.currentFloor != 3){if(elevator.currentFloor < 3){elevator.derection = Elevator.UP;elevator.arrayClickInSide.add(240);}else{elevator.derection = Elevator.DOWN;elevator.arrayClickInSide.add(300);}elevator.isAllowRunInSide = false;elevator.isAllowRunOutSide = false;elevator.targetFloor = 3;}}}if(e.getSource() == btnNum4){if(elevator.isAllowRunInSide){if(elevator.currentFloor != 4){if(elevator.currentFloor < 4){elevator.derection = Elevator.UP;elevator.arrayClickInSide.add(160);}else{elevator.derection = Elevator.DOWN;elevator.arrayClickInSide.add(220);}elevator.isAllowRunInSide = false;elevator.isAllowRunOutSide = false;elevator.targetFloor = 4;}} }if(e.getSource() == btnNum5){if(elevator.isAllowRunInSide){if(elevator.currentFloor != 5){if(elevator.currentFloor < 5){elevator.derection = Elevator.UP;elevator.arrayClickInSide.add(80);}else{elevator.derection = Elevator.DOWN;elevator.arrayClickInSide.add(140);}elevator.isAllowRunInSide = false;elevator.isAllowRunOutSide = false;elevator.targetFloor = 5;}} }if(e.getSource() == btnNum6){if(elevator.isAllowRunInSide){if(elevator.currentFloor < 6){elevator.derection = Elevator.UP;elevator.arrayClickInSide.add(0);elevator.isAllowRunInSide = false;elevator.isAllowRunOutSide = false;elevator.targetFloor = 6;}} }if(e.getSource() == btnClose){if(elevator.arrayClickInSide.size() != 0){//当前电梯停靠楼层与目标楼层相同,此操作无效if(elevator.currentFloor == elevator.targetFloor){elevator.isRun = false;}else{elevator.isRun = true;elevator.isAllowRunInSide = false;}}else{elevator.isAllowRunOutSide = true;}if(elevator.arrayClickOutSide.size() != 0){elevator.isRun = true;}} }};// 监控页面上所有的动作,系统需要监控状态,得以响应动作btnUp1F.addActionListener(seActionListener);btnDown1F.addActionListener(seActionListener);btnUp2F.addActionListener(seActionListener);btnDown2F.addActionListener(seActionListener);btnUp3F.addActionListener(seActionListener);btnDown3F.addActionListener(seActionListener);btnUp4F.addActionListener(seActionListener);btnDonw4F.addActionListener(seActionListener);btnUp5F.addActionListener(seActionListener);btnDown5F.addActionListener(seActionListener);btnUp6F.addActionListener(seActionListener);btnDown6F.addActionListener(seActionListener);btnNum1.addActionListener(seActionListener);btnNum2.addActionListener(seActionListener);btnNum3.addActionListener(seActionListener);btnNum4.addActionListener(seActionListener);btnNum5.addActionListener(seActionListener);btnNum6.addActionListener(seActionListener);btnClose.addActionListener(seActionListener); }private void init(){// 窗口设置setTitle("SimulatedElvetor (SE) 1.1");setSize(400,530);setLayout(null);setResizable(false);// 各楼层位置数字lab1F = new JLabel(" 1");lab1F.setBounds(85,405,20,80);lab1F.setBorder(BorderFactory.createLineBorder(Color.blue));add(lab1F);lab2F = new JLabel(" 2");lab2F.setBounds(85,325,20,80);lab2F.setBorder(BorderFactory.createLineBorder(Color.blue));add(lab2F);lab3F = new JLabel(" 3");lab3F.setBounds(85,245,20,80);lab3F.setBorder(BorderFactory.createLineBorder(Color.blue));add(lab3F);lab4F = new JLabel(" 4");lab4F.setBounds(85,165,20,80);lab4F.setBorder(BorderFactory.createLineBorder(Color.blue));add(lab4F);lab5F = new JLabel(" 5");lab5F.setBounds(85,85,20,80);lab5F.setBorder(BorderFactory.createLineBorder(Color.blue));add(lab5F);lab6F = new JLabel(" 6");lab6F.setBounds(85,5,20,80);lab6F.setBorder(BorderFactory.createLineBorder(Color.blue));add(lab6F);// 各层楼梯呼叫按钮设置    btnUp6F = new JButton("上");btnUp6F.setBounds(105, 5, 50, 40);btnUp6F.setEnabled(false);add(btnUp6F);btnDown6F = new JButton("下");btnDown6F.setBounds(105, 45, 50, 40);add(btnDown6F);btnUp5F = new JButton("上");btnUp5F.setBounds(105, 85, 50, 40);add(btnUp5F);btnDown5F = new JButton("下");btnDown5F.setBounds(105, 125, 50, 40);add(btnDown5F);btnUp4F = new JButton("上");btnUp4F.setBounds(105, 165, 50, 40);add(btnUp4F);btnDonw4F = new JButton("下");btnDonw4F.setBounds(105, 205, 50, 40);add(btnDonw4F);btnUp3F = new JButton("上");btnUp3F.setBounds(105, 245, 50, 40);add(btnUp3F);btnDown3F = new JButton("下");btnDown3F.setBounds(105, 285, 50, 40);add(btnDown3F);btnUp2F = new JButton("上");btnUp2F.setBounds(105, 325, 50, 40);add(btnUp2F);btnDown2F = new JButton("下");btnDown2F.setBounds(105, 365, 50, 40);add(btnDown2F);btnUp1F = new JButton("上");btnUp1F.setBounds(105, 405, 50, 40);add(btnUp1F);btnDown1F = new JButton("下");btnDown1F.setBounds(105, 445, 50, 40);btnDown1F.setEnabled(false);add(btnDown1F);// 电梯内的楼层按钮区域btnNum1 = new JButton("1");btnNum1.setBounds(200, 360, 45, 30);add(btnNum1);btnNum2 = new JButton("2");btnNum2.setBounds(245, 360, 45, 30);add(btnNum2);btnNum3 = new JButton("3");btnNum3.setBounds(290, 360, 45, 30);add(btnNum3);btnNum4 = new JButton("4");btnNum4.setBounds(200, 390, 45, 30);add(btnNum4);btnNum5 = new JButton("5");btnNum5.setBounds(245, 390, 45, 30);add(btnNum5);btnNum6 = new JButton("6");btnNum6.setBounds(290, 390, 45, 30);add(btnNum6);btnClose = new JButton("关门");btnClose.setBounds(200, 330, 135, 30);add(btnClose); // 创建电梯JPanel panElevator = new JPanel();elevator = new Elevator();panElevator = new ElevatorPanel(elevator);panElevator.setBounds(5,5,80,480);panElevator.setBorder(BorderFactory.createLineBorder(Color.darkGray));// 显示牌labDisplay = new JLabel(" 显   示   牌");labDisplay.setBounds(200,200,90,30);labDisplay.setBorder(BorderFactory.createLineBorder(Color.blue));add(labDisplay); // 显示当前所在层数labFloor = new JLabel();labFloor.setBounds(200,231,90,30);labFloor.setBorder(BorderFactory.createLineBorder(Color.blue));add(labFloor); // 电梯运行状态labStatus = new JLabel();labStatus.setBounds(200,262,90,30);labStatus.setBorder(BorderFactory.createLineBorder(Color.blue));add(labStatus); // 电梯运行添加多线程控制Runnable runElevator = new RunElevator(elevator,panElevator);Thread thrElevator = new Thread(runElevator);thrElevator.start();// 显示牌添加多线程控制Runnable runStatus = new StatusRunnable(elevator,labFloor,labStatus);Thread thrStatus = new Thread(runStatus);thrStatus.start();add(panElevator);}} 


1 1
原创粉丝点击