1、JAVA 实验报告 1. 题目 红绿灯控制道路车辆 2.设计思路 交通红绿灯是交通的控制中心, 控制着道路上的所有车辆的行进 与停止,各各车辆为各自的线程,红绿灯也是一个线程,同时,红绿 灯线程用控制着车子线程的 run、suspend、resume。 3重点代码解释 (1)此处代码为添加背景音乐及建立一个 JPanel 容器 File musicFile;/ URI uri; URL url; public void init() musicFile=new File(“街道上汽车鸣笛的声音.wav“); uri=musicFile.toURI(); tryurl=uri.toURL();
2、catch(Exception e) AudioClip clip=JApplet.newAudioClip(url); clip.loop();/以上为添加音乐 Container cp=getContentPane(); CBox pa=new CBox(); pa.setPreferredSize(new Dimension(1000, 1000); pa.setBackground(Color.red); cp.add(pa,BorderLayout.CENTER);/建立一个JPanel容器 (2)此段代码为红绿灯线程,控制红绿灯的变化,同时还会在变化 灯时唤醒其他的线程,使正在 s
3、leep 的线程 resume。 while(th5=Thread.currentThread()/线程5,此 线程控制红绿灯 if(L1.RedLight) th3.resume();/当红灯亮时,东西向车子停,南北向车子动 try th5.sleep(5000); L1.RedLight=false; L1.YellowLight=true; L1.GreenLight=false; repaint(); catch(Exception e) if(L1.YellowLight) th3.resume();/当黄灯亮时,东西向车子停,南北向车子动 try th5.sleep(5000);
4、L1.YellowLight=false; L1.GreenLight=true; L1.RedLight=false; repaint(); catch(Exception e) if(L1.GreenLight) th1.resume();/当绿灯亮时,东西向车子启动,南北向车子 停止 th2.resume(); th4.resume(); try th5.sleep(10000); L1.YellowLight=false; L1.RedLight=true; L1.GreenLight=false; repaint(); catch(Exception e) (3)我们在屏幕上自绘图形或者是添加图片都是要通过所在画布 的重绘来实现的,因此闪烁的出现必然与重绘机制有着一些关联。在 awt 中对于窗体画布的重绘其条用顺序是 r