Java课程设计第二次实验报告--红绿黄灯(完整代码+报告)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);
}
}
}
}