JAVA--第十一周实验--模拟一个信号灯的软件--代码重构--升级版

Test类

 

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

public class Test {

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

	}

}


SignalCanvas类

 

package Draw;

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

public class SignalCanvas extends Canvas {
	int x, y, r;
	Color color;

	SignalCanvas(Color color) {
		setBackground(color);
	}

	public void setX() {
		this.x = (int) (Math.random() * 100) + 200;
	}

	public void setY() {
		this.y = (int) (Math.random() * 100) + 200;
	}

	public void setR() {
		this.r = (int) (Math.random() * 60) + 60;
	}

	public void paint(Graphics g) {
			g.setColor(this.color);
		g.fillOval(x, y, 2 * r, 2 * r);
	}

	public void setColor(Color color) {
		this.color = color;
	}

}


Select_draw类

 

package Draw;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;

public class Select_draw extends JFrame implements ItemListener {
	SignalCanvas myCanvas;
	Choice choice;

	Select_draw() {
		setTitle("信号灯");
		choice = new Choice();
		choice.add("默认无信号");
		choice.add("红灯");
		choice.add("绿灯");
		choice.add("黄灯");
		add(choice, BorderLayout.NORTH);
		choice.addItemListener(this);
		myCanvas = new SignalCanvas(Color.white);
		add(myCanvas, BorderLayout.CENTER);
		setSize(600, 600);
		setVisible(true);
	}

	public void itemStateChanged(ItemEvent e) {
		String name = choice.getSelectedItem();
		System.out.println(name);
		if (name == "红灯") {
			myCanvas.setColor(Color.red);
		} else if (name == "绿灯") {
			myCanvas.setColor(Color.blue);
		} else if (name == "黄灯") {
			myCanvas.setColor(Color.yellow);
		} else {
			myCanvas.setColor(Color.white);
		}
		myCanvas.setX();
		myCanvas.setY();
		myCanvas.setR();
		myCanvas.repaint();
	}

}


 

运行结果:

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leihengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值