当前位置:编程学习 > JAVA >>

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

Test类
 
[java] 
/* (程序头部注释开始)   
 * 程序的版权和版本声明部分   
 * Copyright (c) 2011, 烟台大学计算机学院学生    
 * All rights reserved.   
 * 文件名称: 模拟一个信号灯的软件
 * 作 者: 雷恒鑫    
 * 完成日期: 2012 年 11 月 10 日   
 * 版 本 号: V1.0    
 * 对任务及求解方法的描述部分   
 * 输入描述:在JFrame的北面添加一个下拉列表,该下拉列表有“默认无信号”、“红灯”、“绿灯”和“黄灯”选项。 www.zzzyk.com
 * 输入描述:在窗口的中心添加一个画布,当用户在下拉列表选择某项后,在画布上相应的信号灯。
 * 输入描述:程序组成:编写 一个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类
 
[java] 
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类
 
[java] 
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(); 
    } 
 

 
运行结果:

 


\

 

\

 

\

 

\

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,