模拟一个信号灯的软件

模拟一个信号灯的软件。在JFrame的北面添加一个下拉列表,该下拉列表有“默认无信号”、“红灯”、“绿灯”和“黄灯”选项。在窗口的中心添加一个画布,当用户在下拉列表选择某项后,在画布上相应的信号灯。程序组成:编写 一个Canvas的子类SignalCanvas,负责画灯。编写 一个GUI类,实现选择画图。编写 一个程序执行入口测试该软件。

红绿灯类:

import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.HeadlessException;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;


public class Test2 extends JFrame implements ItemListener{
	Choice box;
	int num;

	public Test2() throws HeadlessException {
		super();
		// TODO Auto-generated constructor stub
		box=new Choice();
		box.add("------无信号-----");
		box.add("红灯");
		box.add("绿灯");
		box.add("黄灯");
		add(box);
		box.addItemListener(this);
		setBounds(100, 100, 400, 400);
		setLayout(new FlowLayout());
		setVisible(true);
		validate();
	}
	@Override
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
		g.setColor(Color.white);
		if(num==1)
		{
		g.setColor(Color.red);
		}
		if(num==2)
		{
			g.setColor(Color.green);
		}
		if(num==3)
		{
			g.setColor(Color.yellow);
		}
		g.drawOval(150, 150, 100, 100);
		g.fillOval(150, 150, 100, 100);
	}
	@Override
	public void itemStateChanged(ItemEvent arg0) {
		// TODO Auto-generated method stub
		 num=box.getSelectedIndex();
		repaint();
		
	}
	

}


测试类:

public class Testmain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		ComputerFrame com=new ComputerFrame();
		Test2 t2=new Test2();
	}

}


ps:1.并未写SignalCanvas类,JFrame本身就具有paint()以及repaint()函数;

        2.对JComboBox还未进行研究,所以用跟其功能相似的choice重量级组件,会逐步改进。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值