JAVA--第十周之红绿灯的模拟程序

首感:本来没按照课本上做,以为能做出来,但是费了好几天都没做出来,还是知识储备太少了,所以又乖乖看课本。

首先是画布类:

import java.awt.*;

import java.awt.Canvas;  
import java.awt.Color;  
import java.awt.Graphics;

 class Mycanvas extends Canvas{
	
	int x,y,r;
	
	
	Color c2;
	Mycanvas()
	{
		setBackground(Color.white);
	}
	
 
	public void get(int x)
	{
		this.x = x;
	}

	public void get2(int y)
	{
	this.y = y;
	}
	
	public void get3(int r)
	{
		this.r = r;
	}
	
	
	public void paint(Graphics g)
	{
		
		g.setColor(c2);
		g.fillOval(x, y,2*r,2*r);
	}
	
	public void update(Graphics g)
	{
		g.clearRect(x, y,2*r,2*r);
		paint(g);
	}
	
	


	
	
	

}


 

然后是主类:

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Wancheng extends JFrame implements ItemListener{



	Mycanvas w;
	
	JComboBox c;

	
	 Wancheng()
	{
		 w = new Mycanvas();
	
		
	
		
		
		Panel p1 = new Panel();
		
		c = new JComboBox();
		
		c.addItem("默认信号");
		
		c.addItem("红灯");
		
		c.addItem("黄灯");
		
		c.addItem("绿灯");
		
		p1.add(c);
	
		
		add(w,BorderLayout.CENTER);
		add(p1,BorderLayout.NORTH);
	
		
		c.addItemListener(this);
		
		setBounds(350,350,550,550);
		
		setVisible(true);
		
		validate();
	}
	
	
	
		
	
	






	@Override
	public void itemStateChanged(ItemEvent arg0) {
		// TODO Auto-generated method stub
		int d = c.getSelectedIndex();
		if (d == 0)
		{
		
			
			w.get(100);
			
			w.get2(100);
			
			w.get3(100);
			
			
		}
		if (d == 1)
		{
		
			
			w.get(100);
			
			w.get2(100);
			
			w.get3(100);
			
			w.c2 = Color.red;
			
			w.repaint();
		}
		
		if (d == 2)
		{
		
			
			w.get(100);
			
			w.get2(100);
			
			w.get3(100);
			
			w.c2 = Color.yellow;
			
			w.repaint();
		}
		
		if (d == 3)
		{
		
			
			w.get(100);
			
			w.get2(100);
			
			w.get3(100);
			
			w.c2 = Color.green;
			
			w.repaint();
		}
		
	}




}


 

最后是测试类;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		new Wancheng();
	}

}

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值