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();
}
}
運行結果: