package com.graphics;

import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel; /**
* 1:Graphics类是所有图形上下文的抽象基类。
*
* 2:Graphics2D继承了Graphics类,实现了功能更加强大的绘图操作的集合。
* 由于Graphics2D类是Graphics类的扩展,也是推荐使用的java绘图类
* 所以本章主要介绍使用Graphics2D类实现JAVA绘图
*
* 3:Graphics类使用的不同的方法实现不同的绘制
* @author biexiansheng
*
*/
public class DrawCircle extends JFrame{ private final int OVAL_WIDTH=80;//圆形的宽
private final int OVAL_HEIGHT=80;//圆形的高
public DrawCircle(){
super();
initialize();//调用初始化方法
}
//初始化方法
private void initialize(){
this.setSize(300, 200);//设置窗体的大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体的关闭方式
setContentPane(new DrawPanel());//设置窗体面板为绘图面板对象
this.setTitle("绘图实例2");//设置窗体标题
} class DrawPanel extends JPanel{
public void paint(Graphics g){
super.paint(g);
g.drawOval(10, 10, OVAL_WIDTH, OVAL_HEIGHT);//绘制第1个圆形
g.drawOval(80, 10, OVAL_WIDTH, OVAL_HEIGHT);//绘制第2个圆形
g.drawOval(150, 10, OVAL_WIDTH, OVAL_HEIGHT);//绘制第3个圆形
g.drawOval(50, 70, OVAL_WIDTH, OVAL_HEIGHT);//绘制第4个圆形
g.drawOval(120, 70, OVAL_WIDTH, OVAL_HEIGHT);//绘制第5个圆形 }
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DrawCircle dc=new DrawCircle();//初始化对象且调用构造方法
dc.setVisible(true);//窗体可视化
} }

案例运行结果如下

package com.graphics;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D; import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants; /**
* 1:Graphics2D是继承Graphics类编写的,它包含了Graphics类的绘图方法并添加了更强的功能
* 是推荐使用的绘图类,
* Graphics2D可以分别使用不同的类表示不同的形状,如Line2D,Rectangle2D等。
*
* 2:要绘制指定形状的图形,需要先创建并初始化该图类型的对象,这些图形类必须是Shape接口
* 的实现类,然后使用Graphics2D类的draw()方法绘制该图形对象或者使用fill()方法填充
* 该图形对象
* 语法如下
* draw(Shape form)或者fill(Shape form)
* 其中form指实现Shape接口的对象。
* @author biexiansheng
*
*/
public class DrawFrame extends JFrame{ public DrawFrame(){
super();
initialize();//调用初始化方法
}
//初始化方法
public void initialize(){
this.setSize(300, 200);//设置窗体大小
//设置窗体的关闭方式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
add(new CanvasPanel());//设置窗体面板为绘图面板对象
this.setTitle("绘图实例2");//设置窗体标题
} //创建内部类
class CanvasPanel extends JPanel{
public void paint(Graphics g){
super.paint(g);
Graphics2D g2=(Graphics2D)g;//强制类型转换位Graphics2D类型
//Graphics2D是推荐使用的绘图类,但是程序设计中提供的绘图对象大多是
//Graphics类的实例,这时应该使用强制类型转换将其转换为Graphics
Shape[] shapes=new Shape[4];//声明图形数组
shapes[0]=new Ellipse2D.Double(5, 5, 100, 100);//创建圆形对象
//创建矩形对象
shapes[1]=new Rectangle2D.Double(110,5,100,100);//
shapes[2]=new Rectangle2D.Double(15, 15, 80, 80);//创建矩形对象
shapes[3]=new Ellipse2D.Double(120, 15, 80, 80);//创建圆形对象
for(Shape shape:shapes){//遍历图型数组
Rectangle2D bounds=shape.getBounds2D();
if(bounds.getWidth()==80){
g2.fill(shape);//填充图形
}else{
g2.draw(shape);//绘制图形
}
} }
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DrawFrame df=new DrawFrame();
df.setVisible(true);
} }

案例运行结果如下,

可以设置颜色,或可以直接使用g2.setColor(Color.RED);

                                                       

JAVA学习AWT绘图的更多相关文章

  1. Java学习之AWT GUI编程

    Java学习之AWT GUI编程 0x00 前言 既然前面提到了要重写冰蝎和一些反序列化工具,当然就不能随便说说而已.在编写这些工具还是要使用图形化工具来的方便一些,所以提前把GUI的框架给学习一遍. ...

  2. java学习笔记(详细)

    java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企业版 java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同系统上要安装对应的虚 ...

  3. [ Java学习基础 ] Java的抽象类与接口

    一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...

  4. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  5. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  6. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  7. Java学习路线图,专为新手定制的Java学习计划建议

    怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:    首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...

  8. Java学习之路:不走弯路,就是捷径

    1.如何学习程序设计? JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用.有编程高手认为,JAVA也好C也好没什么分别,拿来就用.为 ...

  9. Java学习-038-JavaWeb_007 -- JSP 动作标识 - plugin

    plugin 动作时用来在 JSP 页面中加载 Java Applet 或者 JavaBean 组件,语法格式如下所示: <jsp:plugin type="bean|applet&q ...

随机推荐

  1. 点亮一个led灯

    /********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...

  2. handlebars

    Handlebars 是 JavaScript 一个语义模板库,通过对view和data的分离来快速构建Web模板.它采用"Logic-less template"(无逻辑模版)的 ...

  3. caffe 安装在win 7 vs2015 无gpu的安装方式-是无法安装 的

    网上多数是vs2012或者vs2013上安装方式,带NA-显卡的需要安装CUDA7.5,安装cuDNN4,cuDNN. 一 :下载caffe源码(microsoft版) 下载地址:https://gi ...

  4. Asp.net mvc上传多张图片后台存储

    前台页面通过<file name="img">标签数组上传图片,后台根据Request.Files["img"]来接收前台上传的图片. 1 Syst ...

  5. 使用12c的DBCA创建数据库的时候报错TNS-04404

    情况:之前使用的默认的pdb数据库pdborcl,连接的时候使用SQLdeveloper,配置了tnsname.ora,里面添加了pdborcl的service:这里报错是感觉tnsname配置错误了 ...

  6. 【java】: 操作excel2007/2003

    //上传位置(与操作excel无关,可不看) public String getUploadPath() { File theWebFolder = XMPPServer.getInstance(). ...

  7. 关于VMWARE 上对于不小心VMWare Tools Easy Install 后卡死的解决方法

    PS 要想修改首先开机的时候会进入命令行,输入用户名,密码后,可以用startx来进入图形界面(也有人将/etc/init.d/ligtmd start可以懂事本人那次是不行的) 通常网上人们的解决办 ...

  8. CSS中父元素高度没有随子元素高度的改变而改变,应该如何解决?

    如果子元素没有设置浮动(float),父元素实际上会根据内容,自动宽高进行适应的. 当子元素增加了浮动后,最简单的处理方法是给父元素添加overflow:hidden属性,此时父元素的高度会随子元素的 ...

  9. cloudera manager安装步骤小结

    1.准备三台虚拟机,系统是centos 7,IP分别是: 192.168.254.110 master 192.168.254.111 slave1 192.168.254.112 slave2 2. ...

  10. linux-7 man 命令

    man  命令的分类 man 命令 代码 代表内容 普通命令 内核调用的函数与工具 常见的函数与函数库 设备文件的说明 配置文件 游戏 惯例与协议 管理员可使用的命令 内核相关的文件 一般来讲帮助文档 ...