您的位置:首页 > 其它

模拟一个信号灯的软件

2012-11-06 21:37 363 查看
模拟一个信号灯的软件。在JFrame的北面添加一个下拉列表,该下拉列表有“默认无信号”、“红灯”、“绿灯”和“黄灯”选项。在窗口的中心添加一个画布,当用户在下拉列表选择某项后,在画布上相应的信号灯。程序组成:编写 一个Canvas的子类SignalCanvas,负责画灯。编写 一个GUI类,实现选择画图。编写 一个程序执行入口测试该软件。

红绿灯类:

import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.HeadlessException;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class Test2 extends JFrame implements ItemListener{
Choice box;
int num;

public Test2() throws HeadlessException {
super();
// TODO Auto-generated constructor stub
box=new Choice();
box.add("------无信号-----");
box.add("红灯");
box.add("绿灯");
box.add("黄灯");
add(box);
box.addItemListener(this);
setBounds(100, 100, 400, 400);
setLayout(new FlowLayout());
setVisible(true);
validate();
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.setColor(Color.white);
if(num==1)
{
g.setColor(Color.red);
}
if(num==2)
{
g.setColor(Color.green);
}
if(num==3)
{
g.setColor(Color.yellow);
}
g.drawOval(150, 150, 100, 100);
g.fillOval(150, 150, 100, 100);
}
@Override
public void itemStateChanged(ItemEvent arg0) {
// TODO Auto-generated method stub
num=box.getSelectedIndex();
repaint();

}

}


测试类:

public class Testmain {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//		ComputerFrame com=new ComputerFrame();
Test2 t2=new Test2();
}

}


ps:1.并未写SignalCanvas类,JFrame本身就具有paint()以及repaint()函数;

        2.对JComboBox还未进行研究,所以用跟其功能相似的choice重量级组件,会逐步改进。



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: