java上机 第十一周 任务2 模拟一个信号灯

/* 
* 程序头部注释开始   
* 程序的版权和版本声明部分   
* Copyright (c) 2011, 烟台大学计算机学院学生   
* All rights reserved.   
* 文件名称:模拟一个信号灯                      
* 作    者:薛广晨                               
* 完成日期:2012  年 11 月  07 日   
* 版 本号:x1.0            
   
* 对任务及求解方法的描述部分   
* 输入描述:  
* 问题描述: 在JFrame的北面添加一个下拉列表,该下拉列表有“默认无信号”、“红灯”、“绿灯”和“黄灯”选项。
*        在窗口的中心添加一个画布,当用户在下拉列表选择某项后,在画布上相应的信号灯。
*        程序组成:编写 一个Canvas的子类SignalCanvas,负责画灯。
*        编写 一个GUI类,实现选择画图。编写 一个程序执行入口测试该软件
* 程序输出:   
* 程序头部的注释结束 
*/
package xue;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MytransJframe extends JFrame implements ItemListener{
	Choice jcb;
	SignalCanvas sc;
	
	MytransJframe()
	{
		setLayout(new BorderLayout());  
		setTitle("交通灯");  
		setSize(300,300);  
		setVisible(true); 
		jcb = new Choice();
		sc = new SignalCanvas();
		
		jcb.addItem("无信号");
		jcb.addItem("红灯");
		jcb.addItem("黄灯");
		jcb.addItem("绿灯");
		jcb.addItemListener(this);
		
		add(jcb, BorderLayout.NORTH);
		add(sc, BorderLayout.CENTER);
		
		setBounds(100, 100, 240, 240);  
		setVisible(true);  
		validate();  
	}

	public void itemStateChanged(ItemEvent e) {
		String name = (String)jcb.getSelectedItem();
		if(name == "无信号")
		{
			sc.setMyColor(Color.WHITE);
			sc.repaint();
		}	
		else if(name == "红灯")
		{
			sc.setMyColor(Color.RED);
			sc.repaint();
		}
		else if(name == "黄灯")
		{
			sc.setMyColor(Color.YELLOW);
			sc.repaint();
		}
		else if(name == "绿灯")
		{
			sc.setMyColor(Color.GREEN);
			sc.repaint();
		}
	}

}

//SignalCanvas类
package xue;

import java.awt.*;

public class SignalCanvas extends Canvas{
	private Color myColor=Color.white;
	
	public Color getMyColor() {
		return myColor;
	}
	public void setMyColor(Color myColor) {
		this.myColor = myColor;
	}

	SignalCanvas()
	{
		setBackground(Color.white);
	}
	
	public void paint(Graphics g)
	{
		g.setColor(myColor);
		g.drawOval(50, 50, 100, 100);
		g.fillOval(50, 50, 100, 100);
	}

}

运行结果:


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值