一个简单的java图形绘制

问题描述

题目大意:做一个简单的交通灯,要求框架里有三个单选按钮(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);//亮红灯elseg.fillOval(getWidth()/2,30,15,15);//熄灭红灯if(!green.isSelected())g.drawOval(getWidth()/2,50,15,15);//亮绿灯elseg.fillOval(getWidth()/2,50,15,15);//熄灭绿灯if(!yellow.isSelected())g.drawOval(getWidth()/2,70,15,15);//亮黄灯elseg.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);}}

解决方案

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);} elselightYellow(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);}}代码还是有很多地方待改进

时间: 2024-10-02 03:42:47

一个简单的java图形绘制的相关文章

一个简单的Java EE&Docker示例

本文讲的是一个简单的Java EE&Docker示例,[编者的话]学习Docker的最好办法就是迅速在工作中应用它,本文作者使用Docker部署了一个Java EE应用,非常简单和方便.需要注意的是,由于作者写作时本地网络有问题,所以Dockerfile中很多的资源都没有从网络下载,你再实践时,可以尝试修改.学习快乐 :) 本文中,我们将会把Java EE和Docker结合,具体内容如下: 创建.构建并运行一个Docker镜像: 通过镜像启动一个Wildfly服务器,并部署了一个JavaEE示例

Java核心技术卷I基础知识3.1 一个简单的Java应用程序

第3章 Java的基本程序设计结构 ▲  一个简单的Java应用程序     ▲  字符串 ▲  注释                      ▲  输入输出 ▲  数据类型               ▲  控制流 ▲  变量                      ▲  大数值 ▲  运算符                  ▲  数组   现在,假定已经成功地安装了JDK,并且能够运行第2章中给出的示例程序.我们从现在开始将介绍Java应用程序设计.本章主要介绍程序设计的基本概念(如数

一个简单计算器java程序,不知道为什么除法总是算错

问题描述 一个简单计算器java程序,不知道为什么除法总是算错 一个简单计算器java程序,不知道为什么除法总是算错(不是全概率是高概率应该说,麻烦大大帮忙看看,非常感激 package com.calculator; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Em

for-请教各位 一个简单的 java 小问题

问题描述 请教各位 一个简单的 java 小问题 int arr[]={1,2,3,4,5,6,7,8,9,10}; int i,temp; for(i=0;i<10;i++){ } System.out.println("a"+i); temp=arr[0]; for(i=0;i<9;i++){ arr[i]=arr[i+1]; } System.out.println("b"+i); System.out.println("c"+

java 自学 新手-一个简单的Java 计算问题

问题描述 一个简单的Java 计算问题 输出结果总是0,大牛们,可不可以告诉我错在哪里了!代码如下package HelloWorld;import java.util.Scanner;public class Tax { public static void main(String[] args) { double a = 0.0b=0.0;//定义工资为a个人所得税为b; System.out.println(""请输入您的月工资,我们将严密计算您的个人所得税!"&quo

求助!一个简单的java学员信息管理系统 愿意帮忙写代码的。我愿意额外支付酬劳

问题描述 求助!一个简单的java学员信息管理系统 愿意帮忙写代码的.我愿意额外支付酬劳 具体要求按图片 要Java代码,用filereader和filewriter 实现.数据保存到TXT. 解决方案 http://wenku.baidu.com/link?url=HknzVZjI_D2ayEZ_U0-EkCb6zJsUGQt4sqmXOAZs04FrMLklKDoe24SHulVHMxxz9VSSd5c9fkk1vdyeiw4dwA_tGi2JoqrkHDr1jQPLY5W 解决方案二: 这

实现一个简单的Java编译时注解处理器

简介 Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据.Java语言中的类.方法.变量.参数和包等都可以被标注.Java标注和Javadoc不同,标注有自反性.在编译器生成类文件时,标注可以被嵌入到字节码中,由Java虚拟机执行时获取到标注.根据元注解@Retention指定值的不同,注解可分为SOURCE.CLASS和RUNTIME三种类型.当被声明为SOURCE时,注解仅仅在源码级别被保留,编译时被丢弃:声明为CLASS时,注解会由编译器记录在clas

一个简单的Java死锁示例(转)

在实际编程中,要尽量避免出现死锁的情况,但是让你故意写一个死锁的程序时似乎也不太简单(有公司会出这样的面试题),以下是一个简单的死锁例子,程序说明都写着类的注释里了,有点罗嗦,但是应该也还是表述清楚了的. [code=java] /*** 一个简单的死锁类* @author iStar* 当类的对象flag=1时(T1),先锁定O1,睡眠500毫秒,然后锁定O2:* 而T1在睡眠的时候另一个flag=0的对象(T2)线程启动,先锁定O2,睡眠500毫秒,等待T1释放O1:* T1睡眠结束后需要锁

5、编写一个简单的JAVA Application 应用程序,编写两个方法area1,area2计算圆柱体的表面积和体积,圆柱体半径R=5,高H=10,并输出计

问题描述 5.编写一个简单的JAVAApplication应用程序,编写两个方法area1,area2计算圆柱体的表面积和体积,圆柱体半径R=5,高H=10,并输出计算结果急求答案谢谢