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();
	}

}


 

運行結果:

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章