JAVA程序设计(15.1)----- 图形用户界面GUI 制作红绿灯~

GUI  Graphics User Interrface图形化的用户界面,让用户通过点击鼠标就能完成想要做的事情;
主要是练习界面设置 界面布局 添加组件 设置组件 接口 重写 监听器
制作一个信号灯,点击下面的单选按钮 指定的信号灯亮起,代码如下:

package com.lovo.homework1;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
/**
 * 类:红绿灯
 * @author Abe
 * 点击按钮改变颜色
 */
@SuppressWarnings("serial")
public class TrafficLight extends JFrame implements ItemListener{
	private JRadioButton[] lights = new JRadioButton[3];
	private String[] lightColor = {"红灯","黄灯","绿灯"};
	private Color[] colors = {Color.red,Color.yellow,Color.green};
	private int n = 0;
	
	/**
	 * 构造器 
	 */
	public TrafficLight(){
		//窗口构造
		this.setSize(200, 400);
		this.setResizable(false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		this.setLayout(null);
		
		//按钮组构造
		ButtonGroup group = new ButtonGroup();
		for(int i = 0 ; i < lights.length; i++){
		lights[i] = new JRadioButton(lightColor[i],true);
		group.add(lights[i]);
		this.add(lights[i]);
		lights[i].addItemListener(this);
		lights[i].setBounds(10  + 60 * i, 280, 60, 100);
		}
	}
	
	/**
	 * 重写:paint回调方法
	 */
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		
		g.setColor(colors[n]);
		g.fillOval(70, 80 + n * 70, 60, 60);
		
		g.setColor(Color.BLACK);
		g.drawRect(45, 60, 110, 240);
		for(int i = 0; i < 3;i++){
		g.drawOval(70, 80 + i * 70, 60, 60);
		}
	}
	
	/**
	 * main方法:设置窗口可见
	 */
	public static void main(String[] args) {
		new TrafficLight().setVisible(true);
	}

	/**
	 * 方法:监听按钮改变
	 */
	@Override
	public void itemStateChanged(ItemEvent e) {
		Object obj = e.getSource();
		if(obj == lights[0]){
			n = 0;
		}else if(obj == lights[1]){
			n = 1;
		}else if(obj == lights[2]){
			n = 2;
		}
		repaint();
	}
}




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。