0 0

一个简单的java图形绘制5

题目大意:做一个简单的交通灯,要求框架里有三个单选按钮(red,green,yellow),一组交通指示灯(三个灯泡)。选择单选按钮后,相应的灯会亮,一次只能亮一种灯。
以下是我的程序,执行以后面板上有按钮,可就是没有图像,求各位指点啊
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TrafficLight extends JFrame
{
PaintPanel paintPanel=new PaintPanel();//申请画图面板,按钮面板和三个单选按钮
JPanel buttons=new JPanel();
JRadioButton red=new JRadioButton("red");
JRadioButton green=new JRadioButton("green");
JRadioButton yellow=new JRadioButton("yellow");
TrafficLight()
{
ButtonGroup ni=new ButtonGroup();//将单选按钮加入按钮组
ni.add(red);
ni.add(green);
ni.add(yellow);
buttons.setLayout(new FlowLayout());//将单选按钮加入按钮面板
buttons.add(red);
buttons.add(green);
buttons.add(yellow);
setLayout(new BorderLayout());//将按钮面板和画图面板加入框架
add(paintPanel,BorderLayout.NORTH);
add(buttons,BorderLayout.SOUTH );
red.addActionListener(new ActionListener(){//为三个单选按钮设置监听
public void actionPerformed(ActionEvent e){repaint();}});
yellow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){repaint();}});
green.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){repaint();}});
}
public class PaintPanel extends JPanel
{
protected void paintComponent(Graphics g)
{
super.paintComponents(g);
g.drawRect(getWidth()/2-10,20, 20, 60);//按要求绘制交通灯
if(!red.isSelected())
g.drawOval(getWidth()/2,30,15,15);//亮红灯
else
g.fillOval(getWidth()/2,30,15,15);//熄灭红灯
if(!green.isSelected())
g.drawOval(getWidth()/2,50,15,15);//亮绿灯
else
g.fillOval(getWidth()/2,50,15,15);//熄灭绿灯
if(!yellow.isSelected())
g.drawOval(getWidth()/2,70,15,15);//亮黄灯
else
g.fillOval(getWidth()/2,70,15,15);//熄灭黄灯
}

}
public static void main(String [] args)//主函数
{
TrafficLight mine=new TrafficLight();
mine.setTitle("TrafficLight");
mine.setSize(800,500);
mine.setVisible(true);
}
}
2011年9月21日 14:12

1个答案 按时间排序 按投票排序

0 0

采纳的答案



import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TrafficLight extends JFrame {
	PaintPanel paintPanel = new PaintPanel();// 申请画图面板,按钮面板和三个单选按钮
	JPanel buttons = new JPanel();
	JRadioButton red = new JRadioButton("red", true);
	JRadioButton green = new JRadioButton("green");
	JRadioButton yellow = new JRadioButton("yellow");

	TrafficLight() {
		paintPanel.setPreferredSize(new Dimension(600, 400));
		ButtonGroup ni = new ButtonGroup();// 将单选按钮加入按钮组
		ni.add(red);
		ni.add(green);
		ni.add(yellow);
		buttons.setLayout(new FlowLayout());// 将单选按钮加入按钮面板
		buttons.add(red);
		buttons.add(green);
		buttons.add(yellow);
		setLayout(new BorderLayout());// 将按钮面板和画图面板加入框架
		add(paintPanel, BorderLayout.NORTH);
		add(buttons, BorderLayout.SOUTH);
		red.addActionListener(new ActionListener() {// 为三个单选按钮设置监听
					public void actionPerformed(ActionEvent e) {
						repaint();
					}
				});
		yellow.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				repaint();
			}
		});
		green.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				repaint();
			}
		});
	}

	public class PaintPanel extends JPanel {
		protected void paintComponent(Graphics g) {
			super.paintComponents(g);
			g.clearRect(0, 0, getWidth(), getHeight());
			g.drawRect(getWidth() / 2, 20, 30, 80);// 按要求绘制交通灯
			if (red.isSelected()) {
				lightRed(g);
			} else if (green.isSelected()) {
				lightGreen(g);
			} else
				lightYellow(g);
		}

	}

	private void lightRed(Graphics g) {
		g.setColor(Color.red);
		g.fillOval(getWidth() / 2, 30, 15, 15);
		g.setColor(Color.black);
		g.drawOval(getWidth() / 2, 50, 15, 15);
		g.drawOval(getWidth() / 2, 70, 15, 15);
	}

	private void lightGreen(Graphics g) {
		g.setColor(Color.green);
		g.fillOval(getWidth() / 2, 50, 15, 15);
		g.setColor(Color.black);
		g.drawOval(getWidth() / 2, 30, 15, 15);
		g.drawOval(getWidth() / 2, 70, 15, 15);
	}

	private void lightYellow(Graphics g) {
		g.setColor(Color.yellow);
		g.fillOval(getWidth() / 2, 70, 15, 15);
		g.setColor(Color.black);
		g.drawOval(getWidth() / 2, 30, 15, 15);
		g.drawOval(getWidth() / 2, 50, 15, 15);
	}

	public static void main(String[] args)// 主函数
	{
		TrafficLight mine = new TrafficLight();
		mine.setTitle("TrafficLight");
		mine.setSize(800, 600);
		mine.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mine.setVisible(true);
	}
}


代码还是有很多地方待改进

2011年9月21日 15:15

相关推荐

    使用Java创建图形绘制应用程序 - 一个实战教程

    在本项目中,我们将创建一个简单的Java图形绘制应用程序,它包括以下主要功能: 绘制图形:允许用户使用鼠标在绘图区域绘制图形,如线条、矩形、圆形等。 编辑图形:允许用户选择和编辑已绘制的图形,包括移动、...

    java简单图形绘制软件

    可以画圆形、三角型、长方形,可以移动位置,可以进行缩放,可以填充颜色

    java绘图软件(用java的Swing编写的一个简单的绘图软件,可以用来绘制简单的图形,还可以保存,复制,粘贴等很多功能。)详细功能大家自己下载体验

    用java的Swing编写的一个简单的绘图软件,可以用来绘制简单的图形,还可以保存,复制,粘贴。虽然有点小Bug,但是用来当一个毕业设计绝对够格!

    java实现画简单图形

    用java开发的简单的画图程序,可以实现直线,矩形,圆,等的画图,同时可以设置画笔的颜色 <br>按住shift可以画出正方形和正圆

    java图形用户界面

    java图形用户界面,一些简单的图形界面实例

    Java源码--简单的2D图形绘制

    真实资源,求积分 代码的主要功能如下: 基本2D图形测试; 图形小演示; 交互绘制曲线; 模拟绘图软件。

    JAVA绘制简单函数图像工具

    * 这是一个简单的函数显示工具,用户输入简单函数,程序自动画出函数图像,有着完整的注释,十分容易理解 * 支持常数e, sin, cos, tan, ln, ^, 加减乘除括号以及它们的复合运算 * 只能有一个变量,而且必须是x,...

    java图形化界面编程资料.zip

    Java的图形化界面编程,从基础的AWT组件到高级的Swing组件,从单一的组件应用到丰富的图形效果,从简单的使用组件到复杂的图形绘制。

    Java绘制灰太狼图形

    灰太狼的画法有很多,下面来分享一款简单易学灰太狼的画法,希望能给小伙伴带来帮助。该灰太狼是纯手工绘制的,如有不足之处还请见谅

    基于java简单太阳系绘制

    简单的太阳系制作,便于java基础学习

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Java 图形编辑器

    利用java语言实现简单的图形编辑功能,可以绘制直线,圆,矩形等

    在Java中使用Java Swing库来绘制图形和动画生成烟花效果

    在Java中生成烟花效果可以通过多种方式实现,但一个常见的方法是使用Java Swing库来绘制图形和动画。这是一个简单的示例代码,使用Java Swing和AWT库来创建一个显示烟花动画的窗口。 这个代码在窗口中央生成烟花...

    java画板代码 可以画图形

    java画板代码:代码功能可以实现在一个画板中画一些比较简单的几何图形。

    java编写的简单画图程序

    用java语言编写的简单的画图程序,可以打开和保存图片,可以画基本的形状,可以设置画笔颜色

    Java源码包100个设计实例.zip

    java 一个消息发布网站.rar Java 数字签名、数字证书生成源码.rar Java 版的酒店系统,貌似完整.rar Java 电梯模拟程序 v2.0.rar Java 组播组中发送和接受数据实例 Java 飞机订票.rar Java 高考信息管理系统 SQL...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA画图形学(论文+源代码)

    寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观,是图形学的一个重要研究课题。很多自然景物难以用几何模型描述,如烟雾、植物、水波、火焰等。本文所讨论的几种建模及绘制技术都...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java源码包4

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

Global site tag (gtag.js) - Google Analytics