Java课程设计第二次实验报告--红绿黄灯(完整代码+报告)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Java语言》课程作业

(第二次)

题目第13题

学院计算机学院

专业软件工程

班别

学号

姓名

2015年11月20日

一、课程题目

编写一个程序,模拟交通信号灯。程序让用户从红、黄、绿三色灯中选择一种。当选择一个单选按钮后,相应的灯被打开,每次只能亮一种灯。程序开始时所有的灯都不亮。

二、题目分析与设计

1. 论述题目的需求。

通过编写界面程序配合监听事件触发,达到按相应的按钮界面在相应的圆圈显示相应的颜色。

2.论述界面设计过程,指出其设计上的创意及组件的布局策略。

首先设计整体的外框并设置其居屏幕中间,然后设置三个小圆圈并从上到下排列,接着设置颜色触发按钮在最下面,最后再为个组件设置

相应的事件。

3.论述程序的相关功能已在注释中有涉及

4. 所使用的开发环境:Eclipse

解析关键代码部分的实现也在注释中涉及。

三、测试分析

1.初始状态

2.按red按钮

4.按yellow按钮

5.按green按钮

附录:源代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.awt.Graphics;

public class TrafficLight extends JFrame{ /**

*

*/

private static final long serialVersionUID = -8911555102673423810L; JRadioButton jrbYellow,jrbGreen,jrbRed;

int flag=0;

jpNewPanel jpNewPanel;

public static void main(String[] args){

TrafficLight frame=new TrafficLight();

frame.setSize(300,200); //设置窗口大小

frame.setLocationRelativeTo(null); //使窗口显示在屏幕中间

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置叉的功能frame.setTitle("交通灯"); //设置窗口名

frame.setVisible(true); //使窗口可改变大小

}

public TrafficLight(){

//设置各按钮的个数和大小位置还有颜色的调配

jpNewPanel=new jpNewPanel();

add(jpNewPanel,BorderLayout.CENTER);

JPanel jpRadioButtons=new JPanel();

jpRadioButtons.setLayout(new GridLayout(1,4));

jpRadioButtons.add(jrbRed=new JRadioButton("Red")); jpRadioButtons.add(jrbYellow=new JRadioButton("Yellow")); jpRadioButtons.add(jrbGreen=new JRadioButton("Green"));

add(jpRadioButtons,BorderLayout.SOUTH);

ButtonGroup group=new ButtonGroup();

group.add(jrbYellow);

group.add(jrbGreen);

group.add(jrbRed);

//设置三个颜色的监听事件

jrbYellow.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

flag=2;

jpNewPanel.repaint();

}

});

jrbGreen.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

flag=1;

jpNewPanel.repaint();

}

});

jrbRed.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

flag=3;

jpNewPanel.repaint();

}

});

}

class jpNewPanel extends JPanel{

/**

*

*/

private static final long serialVersionUID = 1440950878615850777L; protected void paintComponent(Graphics g){

super.paintComponent(g);

//配置颜色和圆圈的位置吻合

g.drawRect(120,10,40,100);

g.drawOval(130,20,20,20);

g.drawOval(130,50,20,20);

g.drawOval(130,80,20,20);

if(flag==1){

g.setColor(Color.GREEN);

g.fillOval(130, 80, 20, 20);

}

else if(flag==2){

g.setColor(Color.YELLOW);

g.fillOval(130, 50, 20, 20);

}

else if(flag==3){

g.setColor(Color.RED);

g.fillOval(130, 20, 20, 20);

}

}

}

}

相关文档
最新文档