JAVA--第十一週實驗--模擬一個訊號燈的軟體
阿新 • • 發佈:2019-02-09
Test類
/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: 模擬一個訊號燈的軟體 * 作 者: 雷恆鑫 * 完成日期: 2012 年 11 月 09 日 * 版 本 號: 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, i; 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) { if (this.i == 1) { g.setColor(Color.red); // update(Graphics g) } else if (this.i == 2) { System.out.println("畫出列印綠燈"); g.setColor(Color.green); } else if (this.i == 3) { g.setColor(Color.yellow); } else { System.out.println("畫出列印白燈"); g.setColor(Color.white); } g.fillOval(x, y, 2 * r, 2 * r); } public void setI(int i) { this.i = i; } }
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() { // Frame jf = new Frame("畫布"); 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 = new SignalCanvas(Color.red); //System.out.println(e.getSource()); myCanvas.setI(1); myCanvas.setX(); myCanvas.setY(); myCanvas.setR(); //myCanvas.setX(); myCanvas.repaint(); } else if(name == "綠燈") { System.out.println("列印綠燈"); //myCanvas = new SignalCanvas(Color.blue); myCanvas.setI(2); myCanvas.setX(); myCanvas.setY(); myCanvas.setR(); myCanvas.repaint(); } else if(name == "黃燈") { //myCanvas = new SignalCanvas(Color.yellow); myCanvas.setI(3); myCanvas.setX(); myCanvas.setY(); myCanvas.setR(); myCanvas.repaint(); } else { //myCanvas = new SignalCanvas(Color.white); myCanvas.setI(4); myCanvas.setX(); myCanvas.setY(); myCanvas.setR(); myCanvas.repaint(); } //myCanvas = new SignalCanvas(""); } }
執行結果: