zoukankan      html  css  js  c++  java
  • 线程:交通灯

    要求:

    * 1. 开始执行时只有红灯亮
     * 2. 3秒后,红灯暗掉,绿灯亮,持续5秒
     * 3. 然后绿灯暗掉,只有黄灯亮起,持续2秒
     * 4. 然后,黄灯应该变为绿灯
     * 5. 以上程序一直继续
     * 6. 还需要显示每种信号灯剩余的时间

    代码:

    import java.awt.Color;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    /**
     * @author: Annie
     * @date:2016年6月14日
     * @description:交通灯
     * 1. 开始执行时只有红灯亮
     * 2. 3秒后,红灯暗掉,绿灯亮,持续5秒
     * 3. 然后绿灯暗掉,只有黄灯亮起,持续2秒
     * 4. 然后,黄灯应该变为绿灯
     * 5. 以上程序一直继续
     * 6. 还需要显示每种信号灯剩余的时间
     * 
     */
    public class SingleDemo implements Runnable{
    
        JFrame jf;
        JPanel jpRed,jpYellow,jpGreen;
        JLabel jltime,jlshow;
    
        public SingleDemo() {
    
            jpRed = new JPanel();
            jpRed.setBounds(110, 10, 80, 50);
            jpRed.setBackground(Color.GRAY);
    
            jpYellow = new JPanel();
            jpYellow.setBounds(110, 80, 80, 50);
            jpYellow.setBackground(Color.GRAY);
    
            jpGreen = new JPanel();
            jpGreen.setBounds(110, 150, 80, 50);
            jpGreen.setBackground(Color.GRAY);
    
            jltime = new JLabel("Time remaining:");
            jltime.setBounds(70, 230,100, 20);
            jltime.setForeground(Color.BLUE);
    
            jlshow = new JLabel();
            jlshow.setBounds(180, 230,100, 20);
            jlshow.setForeground(Color.BLUE);
    
            jf = new JFrame("交通灯");
            jf.setSize(300, 300);
            jf.setLayout(null);
            jf.add(jpRed);
            jf.add(jpYellow);
            jf.add(jpGreen);
            jf.add(jltime);
            jf.add(jlshow);
    
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        @Override
        public void run() {
            try {
                while(true){
                    jpRed.setBackground(Color.RED);
                    jpYellow.setBackground(Color.GRAY);
                    jpGreen.setBackground(Color.GRAY);
                    for (int i = 3; i >=0; i--) {
                        jlshow.setText(Integer.toString(i)+"---stop----");
                        Thread.sleep(1000);
                    }
                    
                    
                    jpGreen.setBackground(Color.GREEN);
                    jpYellow.setBackground(Color.GRAY);
                    jpRed.setBackground(Color.GRAY);
                    for (int i = 5; i >=0; i--) {
                        jlshow.setText(Integer.toString(i)+"---stop----");
                        Thread.sleep(1000);
                    }
                    
                    jpYellow.setBackground(Color.YELLOW);
                    jpGreen.setBackground(Color.GRAY);
                    jpRed.setBackground(Color.GRAY);
                    for (int i = 2; i >=0; i--) {
                        jlshow.setText(Integer.toString(i)+"---stop----");
                        Thread.sleep(1000);
                    }
                    
                    
                }
            } catch (InterruptedException e) {
    
                e.printStackTrace();
    
            }
        }
        
        public static void main(String[] args) {
            SingleDemo  singleDemo = new SingleDemo();
            Thread thread = new Thread(singleDemo);
            thread.start();
    
        }
    
    }

    效果图:

  • 相关阅读:
    OpenCV 创建Mat图像
    OpenCV Mat数据类型及位数总结
    OpenCV 使用at和ptr指针访问像素的区别
    OpenCV 16位深度图片显示并保存
    PyCharm 安装教程(Windows)
    Qt 安装图解(Windows平台)
    Qt 下载(多种下载通道+所有版本)
    QtCreator怎样编辑运行Python脚本
    Python 怎么运行代码
    Qt for Python 怎样搭建开发环境
  • 原文地址:https://www.cnblogs.com/wangmingxia/p/5584216.html
Copyright © 2011-2022 走看看