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

📄 traficlight_ex.java

📁 java 编程
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package mapack;
import java.awt.*;
import java.awt.event.*;
////////////////////
public class TraficLight_Ex 
{
	public static void main(String args[])
	{
		TraficRun t=new TraficRun();
		t.display(t); //通过display()方法把对象传给线程类来创建东西方向和南北方向的两个线程
	}                 //按下"开始"按纽,开始运行两个方向的线程
}
//###################################################################################
class TraficLight extends Panel  //交通信号灯类
{
	int position=0;                //位置
	Color lightColor=Color.black;  //灯的颜色
	Color color=Color.black;    //灯的默认颜色
	long lastTime=0;           //灯亮的延长时间
	public TraficLight(int p,Color c,int lt)//构造函数
	{
		position=p;
		lightColor=c;
		lastTime=lt;
		this.setBackground(Color.darkGray);
		setSize(100,110);
	}
	public void paint(Graphics g)//画灯函数
	{
		int r=38;
		int x=100/2-48;
		int y=100/2-48;
		g.setColor(color);
		g.fillOval(x,y,r,r);
	}
	public void TurnOn()  //把灯点亮函数
	{
		color=lightColor;
		repaint();			
	}
	public void TurnOff() //把灯熄灭函数
	{
		color=Color.black;
		repaint();
	}
	public void setLinghtTime(long time) //设置灯时间函数
	{
		lastTime=time;
	}
	public long getLinghtTime()	//获得灯的时间函数
	{
		return lastTime;
	}
}
/////////////////////
class direcTarrow extends Panel  //箭头指示类
{
	int a;
	Color lineColor;    //箭头颜色
	Color color;
	public direcTarrow(int a,Color c)
	{
		this.a=a;
		lineColor=c;
		color=Color.BLUE;
		this.setBackground(Color.BLUE);
	}
	public void paint(Graphics g)//画箭头函数
	{
		g.setColor(color);
		int i=0;
		if(a==1)                //如果a为1,画南北方向直行箭头
		{
			for(i=0;i<10;i++)
			{
				g.drawLine(71+i,10,71+i,116);
				g.drawLine(75,i,67,14);
				g.drawLine(75,i,84,14);
				g.drawLine(75,116+i,67,112);
				g.drawLine(75,116+i,84,112);
			}
		}
		if(a==2)              //如果a为2,画东西方向直行箭头
		{
			for(i=0;i<10;i++)
			{
				g.drawLine(9,60+i,141,60+i);
				g.drawLine(i,64,12,57);
				g.drawLine(i,64,12,72);
				g.drawLine(141+i,64,138,57);
				g.drawLine(141+i,64,138,72);
			}
		}
		if(a==3)            //如果a为3,画南北方向左转箭头
		{
			for(i=0;i<10;i++)
			{	
				g.drawLine(61+i,64,61+i,126);				
				g.drawLine(9,64+i,70,64+i);	
				g.drawLine(i,68,12,61);				
				g.drawLine(i,68,12,76);
				g.drawLine(80+i,0,80+i,64);
				g.drawLine(80,55+i,141,55+i);
				g.drawLine(138,52,141+i,59);
				g.drawLine(138,67,141+i,59);
			}		
		}
		if(a==4)           //如果a为4,画东西方向左转箭头
		{
			for(i=0;i<10;i++)
			{
				g.drawLine(66+i,9,66+i,60);
				g.drawLine(0,51+i,75,51+i);
				g.drawLine(75+i,68,75+i,117);
				g.drawLine(75,68+i,150,68+i);
				g.drawLine(70,i,63,12);
				g.drawLine(70,i,78,12);
				g.drawLine(80,117+i,72,114);
				g.drawLine(80,117+i,87,114);
			}			
		}	
	}
	public void turnOn(int a)  //设置箭头为亮的
	{
		this.a=a;
		color=lineColor;
		repaint();
	}
	public void turnOff()    //关掉箭头
	{
		color=Color.BLUE;
		repaint();
	}	
}
//##################################################################################
class TraficRun extends Thread implements ActionListener //交通灯运行的线程类
{
	boolean ewrunable;   //线程互斥标志
	long fluxOfone=100;  //直行绿灯1秒所对应的车辆
	int flag=1;
	TraficRun TR;
	public void TraficRun()
	{
		fluxOfone=100;
		ewrunable=false;   //初始值为false,即东西方向线程不运行
	}
	 //定义所要用的组件
	Frame f;       //主要框架    
	direcTarrow dt;
	TraficLight light1;  //////////////////
	TraficLight light2;
	TraficLight light3;
	TraficLight light4;
	TraficLight light5;
	TraficLight light6;
	TraficLight light7;
	TraficLight light8;
	TraficLight light9;
	TraficLight light10;
	TraficLight light11;
	TraficLight light12;  //24盏交通灯
	TraficLight light21;
	TraficLight light22;
	TraficLight light23;
	TraficLight light24;
	TraficLight light25;
	TraficLight light26;
	TraficLight light27;
	TraficLight light28;
	TraficLight light29;
	TraficLight light210;
	TraficLight light211;
	TraficLight light212;/////////////////
	Label lab1;   //////////////////
	Label lab2;
	Label lab3;
	Label lab4;
	Label lab5;
	Label lab6;
	Label lab7;
	Label lab8;   //16个标签,标记交通灯方向
	Label lab9;
	Label lab10;
	Label lab11;
	Label lab12;
	Label lab13;
	Label lab14;
	Label lab15;
	Label lab16;  ///////////////////
	Panel p1;   
	Panel p2;  //p1--p4面板,用来放4个方向的交通灯
	Panel p3; 
	Panel p4;
	Panel pkong1;
	Panel pkong2;
	Panel pkong3;
	Panel pkong4;
	Panel pkong5;
	Panel kong1;////////////////////////////
	Panel kong2;
	Panel kong3;
	Panel kong4;
	Panel kong5;
	Panel kong6;
	Panel kong7;
	Panel kong8;
	Panel kong9;
	Panel kong10;
	Panel kong11;
	Panel kong12;//24个空的面板,做图形界面时要用到
	Panel kong13;
	Panel kong14;
	Panel kong15;
	Panel kong16;
	Panel kong17;
	Panel kong18;
	Panel kong19;
	Panel kong20;
	Panel kong21;
	Panel kong22;
	Panel kong23;
	Panel kong24;////////////////////////
	/////////////
	Label fortf1,fortf2; //提示车流量的标签
	TextField tf1,tf2;   //显示车流量的文本行
	//////////////////////////
	Label CLASS;   //显示班级,姓名,学号的标签
	////////////////
	Label e;     
	Label w;  //标示东西南北的4个标签
	Label s;
	Label n;
	///////////
	Label nowLightTime; 
	Label SNdreGreen;   //提示各个绿灯信号灯时间的标签
	Label SNleftGreen;
	Label EWdreGreen;
	Label EWleftGreen;
	/////////////
	TextField SNdre;   //显示各绿灯信号灯时间的文本行
	TextField SNleft;
	TextField EWdre;
	TextField EWleft;
	//////////////
	Panel mainp;  //主面板
	///////////
	Button set;
	Button start;
	Button stop;
	///////
	Label forflux1;
	Label forflux2;
	TextField flux;
	public void display(TraficRun TR)  //设计信号灯示意图界面
	{
		this.TR=TR;
		fluxOfone=100;
		f=new Frame("交通灯系统"); //主框架
		f.setSize(680,580);        //设置框架的大小
		f.setResizable(false);     //框架不能改变大小
		f.setBackground(Color.blue);
		f.setLayout(new BorderLayout());		
		mainp=new Panel();
		mainp.setSize(620,540);
		mainp.setBackground(Color.BLUE);
		mainp.setLayout(new GridLayout(3,3,16,16));		
		
		kong1=new Panel();
		kong2=new Panel();
		kong3=new Panel();
		kong4=new Panel();
		kong5=new Panel();
		kong6=new Panel();
		kong7=new Panel();
		kong8=new Panel();
		kong9=new Panel();
		kong10=new Panel();
		kong11=new Panel();
		kong12=new Panel();
		kong13=new Panel();
		kong14=new Panel();
		kong15=new Panel();
		kong16=new Panel();
		kong17=new Panel();
		kong18=new Panel();
		kong19=new Panel();
		kong20=new Panel();
		kong21=new Panel();
		kong22=new Panel();
		kong23=new Panel();
		kong24=new Panel();	
		pkong1=new Panel();
		pkong1.setBackground(Color.orange);
		pkong2=new Panel();
		pkong2.setBackground(Color.orange);
		pkong3=new Panel();
		pkong3.setLayout(new BorderLayout());
		pkong4=new Panel();
		pkong4.setBackground(Color.orange);
		pkong5=new Panel();	
		pkong5.setBackground(Color.orange);
		pkong5.setLayout(new BorderLayout());
		p1=new Panel();
		p1.setSize(280,280);
		p1.setBackground(Color.cyan);
		p1.setLayout(new GridLayout(4,4));
		p2=new Panel();
		p2.setSize(280,280);
		p2.setBackground(Color.cyan);
		p2.setLayout(new GridLayout(4,4));
		p3=new Panel();
		p3.setSize(280,280);
		p3.setBackground(Color.cyan);
		p3.setLayout(new GridLayout(4,4));
		p4=new Panel();
		p4.setSize(280,280);
		p4.setBackground(Color.cyan);
		p4.setLayout(new GridLayout(4,4));
		dt=new direcTarrow(1,Color.CYAN);	//提示当前通行的方向的箭头
		light1=new TraficLight(1,Color.red,2);
		light2=new TraficLight(1,Color.yellow,2);//修改灯2的时间就可以修改南北方向,左转黄灯亮的时间
		light3=new TraficLight(1,Color.GREEN,3); //修改灯3的时间就可以修改南北方向,左转绿灯亮的时间
		light4=new TraficLight(1,Color.red,2);
		light5=new TraficLight(1,Color.yellow,3);
		light6=new TraficLight(1,Color.GREEN,4); //修改灯6的时间就可以修改南北方向,直行绿灯亮的时间
		light7=new TraficLight(1,Color.red,3);   //修改灯5的时间就可以修改南北方向,直行黄灯亮的时间
		light8=new TraficLight(1,Color.yellow,2);//修改灯8的时间就可以修改东西方向,左转黄灯亮的时间
		light9=new TraficLight(1,Color.GREEN,3); //修改灯9的时间就可以修改东西方向,左转绿灯亮的时间
		light10=new TraficLight(1,Color.red,2);
		light11=new TraficLight(1,Color.yellow,3);//修改灯11的时间就可以修改东西方向,直行黄灯亮的时间
		light12=new TraficLight(1,Color.GREEN,4);//修改灯12的时间就可以修改东西方向,直行绿灯亮的时间
		light21=new TraficLight(1,Color.red,2);
		light22=new TraficLight(1,Color.yellow,2);
		light23=new TraficLight(1,Color.GREEN,2);
		light24=new TraficLight(1,Color.red,2);
		light25=new TraficLight(1,Color.yellow,2);
		light26=new TraficLight(1,Color.GREEN,2);
		light27=new TraficLight(1,Color.red,2);
		light28=new TraficLight(1,Color.yellow,2);
		light29=new TraficLight(1,Color.GREEN,2);
		light210=new TraficLight(1,Color.red,2);
		light211=new TraficLight(1,Color.yellow,2);
		light212=new TraficLight(1,Color.GREEN,2); 
		
		lab1=new Label("南往北");
		lab2=new Label("直行灯");
		lab3=new Label("北往南");
		lab4=new Label("直行灯");
		lab5=new Label("南往北");
		lab6=new Label("左转灯");
		lab7=new Label("北往南");
		lab8=new Label("左转灯");
		lab9=new Label("东往西");
		lab10=new Label("直行灯");
		lab11=new Label("西往东");
		lab12=new Label("直行灯");
		lab13=new Label("东往西");
		lab14=new Label("左转灯");
		lab15=new Label("西往东");
		lab16=new Label("左转灯");
		fortf1=new Label("南北方向车流量"); 
		fortf2=new Label("东西方向车流量");
		CLASS= new Label("计算机021、黄世汉、02095111",1);
	
		e=new Label("东");
		w=new Label("西");
		s=new Label("南",1);
		n=new Label("北",1);
		nowLightTime=new Label("                                                      ");
		SNdreGreen=new Label("南北方向直行绿灯时间");
		SNleftGreen=new Label("南北方向左转绿灯时间");	
		EWdreGreen=new Label("东西方向直行绿灯时间");
		EWleftGreen=new Label("东西方向左转绿灯时间");	
		SNdre=new TextField(4);
		SNdre.setEditable(false);
		SNleft=new TextField(4);
		SNleft.setEditable(false);
		EWdre=new TextField(4);
		EWdre.setEditable(false);
		EWleft=new TextField(4);
		EWleft.setEditable(false);
		tf1=new TextField(9);
		tf1.setEditable(false);
		tf2=new TextField(9);

⌨️ 快捷键说明

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