JAVA学习AWT绘图
- 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绘图的更多相关文章
- Java学习之AWT GUI编程
Java学习之AWT GUI编程 0x00 前言 既然前面提到了要重写冰蝎和一些反序列化工具,当然就不能随便说说而已.在编写这些工具还是要使用图形化工具来的方便一些,所以提前把GUI的框架给学习一遍. ...
- java学习笔记(详细)
java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企业版 java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同系统上要安装对应的虚 ...
- [ Java学习基础 ] Java的抽象类与接口
一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- Java学习路线图,专为新手定制的Java学习计划建议
怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西: 首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...
- Java学习之路:不走弯路,就是捷径
1.如何学习程序设计? JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用.有编程高手认为,JAVA也好C也好没什么分别,拿来就用.为 ...
- Java学习-038-JavaWeb_007 -- JSP 动作标识 - plugin
plugin 动作时用来在 JSP 页面中加载 Java Applet 或者 JavaBean 组件,语法格式如下所示: <jsp:plugin type="bean|applet&q ...
随机推荐
- Linux命令(2)- mv
mv 功能:可以用来移动文件或者将文件改名. 格式:mv [选项] 源文件或目录 目标文件或目录 说明:mv命令将文件重命名或将其移至一个新的目录中.第二个参数类型是文件时,mv命令完成文件重命名,此 ...
- stream_copy_to_stream的使用
stream_copy_to_stream - 在数据流之间进行复制操作 例子: <?php //读写方式 $stream = fopen('php://temp', 'w+'); //如果成功 ...
- python-->基础-->004-->迭代器
http://blog.chinaunix.net/uid-23500957-id-3990473.html http://www.cnblogs.com/vamei/archive/2012/07/ ...
- 自动化运维工具之ansible(转)
原文链接:http://os.51cto.com/art/201409/451927_all.htm
- [PHP]Yaf + composer 引起大幅性能下降
composer.json 文件可以用命令 composer init 创建,命令是交互式的. 也可以直接编辑一个 json 文件,如下: repositories 中 url 使用中国全量镜像地址. ...
- [Shell]Bash变量:变量测试与内容替换
--------------------------------------------------------------------------------------------- 变量测试是通 ...
- IOS 进度条与手势
//进度条#import "ViewController.h" @interface ViewController () { UIImageView* _animaImageV; ...
- android设置多个类似APP其中的一个为默认
05-09 17:01:13.547: I/ActivityManager(3003): START u0 {act=android.intent.action.VIEW cat=[android.i ...
- Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com ...
- Java类路径
Java 类路径告诉 java 解释器和 javac 编译器去哪里找它们要执行或导入的类. 类(您可能注意到的那些 *.class 文件)可以存储在目录或 jar 文件中,或者存储在两者的组合中, 但 ...