信号灯
来源:互联网 发布:乐视电视网络插口 编辑:程序博客网 时间:2024/04/28 01:33
/******
* 模拟一个信号灯的软件。在JFrame的北面添加一个下拉列表,该下拉列表有“默认无信号”、“红灯”、“绿灯”和“黄灯”选项。
* 在窗口的中心添加一个画布,
* 当用户在下拉列表选择某项后,在画布上相应的信号灯。
* 程序组成:编写 一个Canvas的子类SignalCanvas,负责画灯。编写 一个GUI类,实现选择画图。
* 编写 一个程序执行入口测试该软件
*/
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.List;
import javax.swing.ComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
public class TestSignal {
public static void main(String[] args) {
new SignalFrame().addWindowListener(new WindowAdapter() //添加窗口关闭处理函数
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}});
}
}
class SignalFrame extends Frame implements ItemListener {
SignalCanvas sc;
JComboBox list;
Graphics g = this.getGraphics(); //获得当前窗口的图形上下文
Color c = Color.red;
public SignalFrame() {
list=new JComboBox();
sc = new SignalCanvas();
list.addItem("无信号");
list.addItem("红灯");
list.addItem("黄灯");
list.addItem("绿灯");
sc.setBackground(Color.pink);
add(list,BorderLayout.NORTH);
add(sc,BorderLayout.CENTER);
list.addItemListener(this);
setVisible(true);
setBounds(100, 100, 450, 450);
setTitle("信号灯");
validate();
}
//@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(e.getItem() == list.getItemAt(0)){
System.out.println("无信号");
c = Color.orange;
sc.update();
}
else if(e.getItem() == list.getItemAt(1)){
System.out.println("红灯");
c = Color.red;
sc.update();
}
else if(e.getItem() == list.getItemAt(2)){
System.out.println("黄灯");
c = Color.yellow;
sc.update();
}
else if(e.getItem() == list.getItemAt(3)){
System.out.println("绿灯");
c = Color.green;
sc.update();
}
}
class SignalCanvas extends Canvas {
public SignalCanvas(){
super();
}
public void paint(Graphics g){
g.clearRect(0, 0, 450, 450);
g.setColor(c);
g.fillOval(120, 120, 100, 100);
g.fillArc(120,120,90,90,0,360);
}
public void update(){
repaint();
}
}
}
- 信号灯
- 信号灯
- 信号灯
- 信号灯
- 信号灯
- 信号灯
- 创建信号灯
- 删除信号灯
- 信号灯实例
- semaphore信号灯
- linux 信号灯
- java信号灯
- Semaphore 信号灯
- semaphore信号灯
- Posix信号灯
- IPC-信号灯
- 交通信号灯
- 交通信号灯
- SS组合方式
- 二叉树相似
- ViewFlipper下,通过onKeyDown不能获取enter键的解决方法
- java语言利用Socket实现对操作系统的命令调用和文件传输
- C#的一些学习笔记
- 信号灯
- Find consecutive elements in an array
- Java学习笔记(二)
- flex 使用as3crypto 加密解密
- c#鼠标拖动画矩形
- .NET的过去与现在
- c#委托与事件、消息、WndProc用法(转)
- speedbar 嵌入 emacs
- Java学习笔记(三)