今天看张老师的交通灯管理视频,看到之前就想自己挑战一下,结果真让我搞了个山寨十足的出来,学Swing没多久,搞出来的界面很挫~~不能笑!!分享下~~
交通灯管理系统 理解:四个路口,其实只用看一个路口,然后分别映射出去就可以了,一个路口的车向右转可以不用考虑,只需考虑左转,前行和停下三种状态,其中停下状态的时间是左转和前行的 总和。 第一版:山寨版(未看视频前自己弄的GUI代码) 程序说明:LampGui是一组单独的等运行。分为两个LampGui1和LampGui2,因为平面上看起来南和北的是相对的。LampThread是实现了Runnable接口的类,它里面实现了交通灯的启动顺序,这个很重要。FramGui为启动类,它建立了四个线程分别运行4个交通灯 代码如下: package TrafficLamp; import java.awt.Color; import java.awt.FlowLayout; import javax.swing.*; public class LampGui1 extends JPanel{ privateJButton btnstop; privateJButton btnturn; privateJButton btngo; publicLampGui1(){ initLamp(); } publicvoid initLamp() { this.setLayout(newFlowLayout()); btnstop=new JButton("停下"); btnturn= new JButton("左转弯"); btngo= new JButton("直走"); this.add(btnturn); this.add(btngo); this.add(btnstop); this.setVisible(true); } publicvoid lampStart(){ while(true){ btngo.setBackground(Color.GREEN); btnstop.setBackground(Color.BLACK); btnturn.setBackground(Color.BLACK); this.repaint(); try{ Thread.sleep(10000); }catch (InterruptedException e) { //TODO Auto-generated catch block e.printStackTrace(); } btngo.setBackground(Color.BLACK); btnstop.setBackground(Color.BLACK); btnturn.setBackground(Color.GREEN); this.repaint(); try{ Thread.sleep(10000); }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } btngo.setBackground(Color.BLACK); btnstop.setBackground(Color.GREEN); btnturn.setBackground(Color.BLACK); this.repaint(); try{ Thread.sleep(20000); }catch (InterruptedException e) { //TODO Auto-generated catch block e.printStackTrace(); } } } } ---------------------------------------------------------------------------------------------------------------------- |