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);
}
}
代码还是有很多地方待改进
相关推荐
在本项目中,我们将创建一个简单的Java图形绘制应用程序,它包括以下主要功能: 绘制图形:允许用户使用鼠标在绘图区域绘制图形,如线条、矩形、圆形等。 编辑图形:允许用户选择和编辑已绘制的图形,包括移动、...
可以画圆形、三角型、长方形,可以移动位置,可以进行缩放,可以填充颜色
用java的Swing编写的一个简单的绘图软件,可以用来绘制简单的图形,还可以保存,复制,粘贴。虽然有点小Bug,但是用来当一个毕业设计绝对够格!
用java开发的简单的画图程序,可以实现直线,矩形,圆,等的画图,同时可以设置画笔的颜色 <br>按住shift可以画出正方形和正圆
java图形用户界面,一些简单的图形界面实例
真实资源,求积分 代码的主要功能如下: 基本2D图形测试; 图形小演示; 交互绘制曲线; 模拟绘图软件。
* 这是一个简单的函数显示工具,用户输入简单函数,程序自动画出函数图像,有着完整的注释,十分容易理解 * 支持常数e, sin, cos, tan, ln, ^, 加减乘除括号以及它们的复合运算 * 只能有一个变量,而且必须是x,...
Java的图形化界面编程,从基础的AWT组件到高级的Swing组件,从单一的组件应用到丰富的图形效果,从简单的使用组件到复杂的图形绘制。
灰太狼的画法有很多,下面来分享一款简单易学灰太狼的画法,希望能给小伙伴带来帮助。该灰太狼是纯手工绘制的,如有不足之处还请见谅
简单的太阳系制作,便于java基础学习
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
利用java语言实现简单的图形编辑功能,可以绘制直线,圆,矩形等
在Java中生成烟花效果可以通过多种方式实现,但一个常见的方法是使用Java Swing库来绘制图形和动画。这是一个简单的示例代码,使用Java Swing和AWT库来创建一个显示烟花动画的窗口。 这个代码在窗口中央生成烟花...
java画板代码:代码功能可以实现在一个画板中画一些比较简单的几何图形。
用java语言编写的简单的画图程序,可以打开和保存图片,可以画基本的形状,可以设置画笔颜色
java 一个消息发布网站.rar Java 数字签名、数字证书生成源码.rar Java 版的酒店系统,貌似完整.rar Java 电梯模拟程序 v2.0.rar Java 组播组中发送和接受数据实例 Java 飞机订票.rar Java 高考信息管理系统 SQL...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观,是图形学的一个重要研究课题。很多自然景物难以用几何模型描述,如烟雾、植物、水波、火焰等。本文所讨论的几种建模及绘制技术都...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...