java上机 第十一周 任务2 模拟一个信号灯

来源:互联网 发布:java待遇 编辑:程序博客网 时间:2024/05/16 19:09
/* * 程序头部注释开始   * 程序的版权和版本声明部分   * Copyright (c) 2011, 烟台大学计算机学院学生   * All rights reserved.   * 文件名称:模拟一个信号灯                      * 作    者:薛广晨                               * 完成日期:2012  年 11 月  07 日   * 版 本号:x1.0               * 对任务及求解方法的描述部分   * 输入描述:  * 问题描述: 在JFrame的北面添加一个下拉列表,该下拉列表有“默认无信号”、“红灯”、“绿灯”和“黄灯”选项。*        在窗口的中心添加一个画布,当用户在下拉列表选择某项后,在画布上相应的信号灯。*        程序组成:编写 一个Canvas的子类SignalCanvas,负责画灯。*        编写 一个GUI类,实现选择画图。编写 一个程序执行入口测试该软件* 程序输出:   * 程序头部的注释结束 */package xue;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MytransJframe extends JFrame implements ItemListener{Choice jcb;SignalCanvas sc;MytransJframe(){setLayout(new BorderLayout());  setTitle("交通灯");  setSize(300,300);  setVisible(true); jcb = new Choice();sc = new SignalCanvas();jcb.addItem("无信号");jcb.addItem("红灯");jcb.addItem("黄灯");jcb.addItem("绿灯");jcb.addItemListener(this);add(jcb, BorderLayout.NORTH);add(sc, BorderLayout.CENTER);setBounds(100, 100, 240, 240);  setVisible(true);  validate();  }public void itemStateChanged(ItemEvent e) {String name = (String)jcb.getSelectedItem();if(name == "无信号"){sc.setMyColor(Color.WHITE);sc.repaint();}else if(name == "红灯"){sc.setMyColor(Color.RED);sc.repaint();}else if(name == "黄灯"){sc.setMyColor(Color.YELLOW);sc.repaint();}else if(name == "绿灯"){sc.setMyColor(Color.GREEN);sc.repaint();}}}//SignalCanvas类package xue;import java.awt.*;public class SignalCanvas extends Canvas{private Color myColor=Color.white;public Color getMyColor() {return myColor;}public void setMyColor(Color myColor) {this.myColor = myColor;}SignalCanvas(){setBackground(Color.white);}public void paint(Graphics g){g.setColor(myColor);g.drawOval(50, 50, 100, 100);g.fillOval(50, 50, 100, 100);}}

运行结果: