《Java程序设计实例教程》 第7章 绘图与图像
大学教程(从零开始)_Java图形处理和Java_2D
{}
public void paint(Graphics g) { //g.clipRect(50,50,180,180); //画线
g.drawLine(0,0,20,30);
//输出字符串 g.drawString("图形显示",100,30);
//设置颜色
Color c = new Color(255,200,0); g.setColor(c); //设置字体
三维矩形 draw3DRect(int x, int y, int width, int height, boolean raised); fill3DRect(int x, int y, int width, int height, boolean raised);
绘制椭圆
drawOval(int x, int y, int width, int height); fillOval(int x, int y, int width, int height); 例在框架中绘制直线、矩形和椭圆。
CAP_BUTT 无装饰地结束未封闭的 子路径和虚线线段。 CAP_ROUND 使用半径等于画笔宽度 一半的圆形装饰 结束未封闭的子路径 和虚线线段。 CAP_SQUARE 使用正方形结束未封 闭的子路径和虚线线段,正方形越过 线段端点,并延长等于线条宽度一半 的距离。
Graphics2D的属性设置
图7-3
绘制弧形
drawArc(int x, int y, int width, int height, int startAngle, int arcAngle); fillArc(int x, int y, int width, int height, int startAngle, int arcAngle);
JAVA程序设计实例教程
基础知识——程序设计基础
⑴ 注释 在程序中适当地加入注释是一种良好的编程习惯,
这样会增加程序的可读性。 注释不能放在一个标识符或关键字之中,也就是说,
要保证程序中最基本元素的完整性。注释不会影 响程序的执行结果,编译器将忽略注释。 在中,主要有以下三种注释形式: 单行注释:注释部分──只对当前行有效 多行注释:*注释部分* 文档注释:**注释部分*
基础知识——基本语
.变量 变量是在程序运行过程中可以赋值并能够对其值进行
更改的数据。 变量是程序中的基本存储单元,它的定义包括变量名、
变量值、变量类型和作用域几个部分。 变量根据其所属的数据类型划分:基本数据类型变量
基础知识——程序设计基础
⑵ 空白符 空白符包括空格、回车、换行和制表符
(键)。各种基本成分之间的多个空白符 与一个空白符的作用相同。在编译过程中, 编译器会忽略空白符。在程序中适当的使 用空白符,可以增强程序的可读性。
基础知识——程序设计基础
⑶ 普通分隔符 普通分隔符具有确定的含义,不能用错。它主要包
如:''、''。中还允许使用转义字符‘\’来将 其后的字符转变为其他的含义。
基础知识——基本语
• 中常用的转义序列
基础知识——基本语
⑷ 逻辑常量 逻辑常量只有两个值:和,分别代表布尔逻
辑中的“真”和“假”。 在中,逻辑常量不能转换成任何其他类型的
数据。 和只能赋值给声明为类型的变量,或者用于
逻辑运算表达式中。
扩展实例
• 运行结果 • 执行“运行→运行”或“运行→运行方式
→应用程序”,即可执行程序。如果程序 尚未保存,会询问在执行前是否要保存文 档,然后执行程序。该程序运行后,执行 结果如图 .
java课程设计画图
java课程设计画图一、教学目标本章节的教学目标是使学生掌握Java编程语言的基本知识,能够使用Java编写简单的图形用户界面(GUI)程序。
具体目标如下:1.掌握Java编程语言的基本语法。
2.了解面向对象编程的基本概念。
3.熟悉Java中的常用类库。
4.能够使用Java编写简单的控制台程序。
5.能够使用Java编写简单的GUI程序。
6.能够使用Java实现基本的图形绘制。
情感态度价值观目标:1.培养学生对编程的兴趣和热情。
2.培养学生解决问题的能力和创新精神。
二、教学内容本章节的教学内容主要包括以下几个部分:1.Java编程语言的基本语法和概念。
2.面向对象编程的基本概念和方法。
3.Java中的常用类库和API。
4.图形用户界面(GUI)程序的设计和实现。
5.图形绘制的基本方法和技巧。
第1课时:Java编程语言的基本语法和概念。
第2课时:面向对象编程的基本概念和方法。
第3课时:Java中的常用类库和API。
第4课时:图形用户界面(GUI)程序的设计和实现。
第5课时:图形绘制的基本方法和技巧。
三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用多种教学方法相结合的方式进行教学。
包括:1.讲授法:讲解Java编程语言的基本语法和概念,面向对象编程的基本概念和方法。
2.案例分析法:通过分析实际案例,让学生了解Java中的常用类库和API。
3.实验法:让学生动手编写Java程序,实践图形用户界面(GUI)程序的设计和实现。
4.讨论法:学生进行小组讨论,分享学习心得和解决问题的方法。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《Java编程语言》。
2.参考书:《Java核心技术》。
3.多媒体资料:PPT课件、教学视频。
4.实验设备:计算机、网络环境。
五、教学评估本章节的评估方式将包括以下几个方面,以保证评估的客观性和公正性:1.平时表现:通过课堂参与度、提问回答、小组讨论等方式评估学生的学习态度和积极性。
Java程序设计教程第7章7.2 多 态
master.feed(xxx); ……
public void feed( XXX xxx ) { xxx.eat();
可否使用一个feed(Pet pet) 实现对所有宠物的喂食?
}
… … 频繁修改代码,代码可扩展性、可维护性差,
}
如何优化?
课堂操作——购置新车2-2
提前做完的同学可以尝试改进系统:
1. 循环从控制台选择汽车种类 2. 从控制台输入天数 3. 累加计算总租金
20/30
多态
总结
使用多态的好处
减少类中代码量 提高代码的可扩展性和可维护性
向上转型——子类转换为父类,自动进行类型转换
向下转型——父类转换为子类,结合instanceof运算符进行强 制类型转换
编写测试方法
调用主人类给狗狗喂的方法 调用主人类给企鹅喂的方法
为什么使用多态5-2
3/30
为什么使用多态5-3
问题
如果再领养XXX宠物,并需要给XXX喂食,怎么办?
添加XXX类,继承Pet类,实现吃食方法 修改Master类,添加给XXX喂食的方法
4/30
为什么使用多态5-4
主人类
练习
需求说明
使用多态实现喂养宠物功能 增加宠物猫并喂食,其健康值增加4
9/30
使用父类作为方法返回值实现多态
使用多态实现领养宠物
使用父类作为方法返回值 实现思路
在Master类添加领养方法getPet(String typeId ) 创建测试类,根据主人选择宠物类型编号来领养宠物
public class Master { public void feed( Dog dog ) { dog.eat(); } public void feed( Penguin pgn ) { pgn.eat(); }
Java程序设计实例教程-第7章
【技术要点】 (1)使用下拉列表JComboBox,选择图像进行 浏览, (2)使用图像跟踪技术,可以等图像全部装载 后再进行显示。
【相关知识及注意事项】 1.在Applet中绘制图像 2.图像跟踪技术
7.4 “鼠标绘制图像”案例
【案例说明】 本实例创建一个窗口,使得在窗口中任意位 置单击鼠标都会以该位置为中心绘制指定图像。 程序运行结果如图7-8所示。
【相关知识及注意事项】 1.在Java Application中绘制图像 2.鼠标事件
7.5 “花的缩放动画 ”案例
【案例说明】 用计时器控制花的缩放动画。程序运行结果 如图7-11所示。
图7-11 花的缩放动画
【案例目的】 (1)学习在Applet中通过多线程实现动画的方 法; (2)学习并掌握双a.awt.geom; (2)将图形对象强制转换为Grahpics2D类型, 设置画笔宽度或绘图渐变色; (3)创建2D图形对象,通过draw()方法将其绘 制。
【相关知识及注意事项】 1.Grahpics2D类的绘图新功能 2.Java 2D图形 3.使用Grahpics2D类绘制Java 2D图形
【技术要点】 (1)导入包java.awt.geom; (2)将图形对象强制转换为Grahpics2D类型, 设置画笔宽度或绘图渐变色; (3)创建2D图形对象,通过draw()方法将其绘 制。
【相关知识及注意事项】 1.绘图表面 2.图形环境和图形对象 3.Graphics类的基本绘图方法 4.Graphics类的绘图模式 5.字体和颜色设置
7.2 “Java 2D图形绘制 ”案例
【案例说明】 本实例要求使用Grahpics2D类绘制一个Java 2D图形,屏幕效果如图7-4所示。
图7-4 Java 2D图形绘制
JAVA基础教程————绘图
Java实用教程
【例5.2】测试Color对象,界面如图5.3所示。源程序代码如下: //程序文件名UseColor.java import java.awt.*; import java.applet.*; import java.awt.geom.*; public class UseColor extends Applet { public void paint(Graphics oldg) { Graphics2D g = (Graphics2D)oldg;
11
Java实用教程
g.draw3DRect(100,100,40,40,false); g.fill3DRect(120,120,40,40,true); //椭圆 g.drawOval(150,150,30,40); g.fillOval(170,170,20,20); g.setColor(Color.blue); //圆角矩形 g.drawRoundRect(180,180,40,40,20,20); g.fillRoundRect(200,200,40,40,20,20);
12
Java实用教程
//多边形 int xC[] = {242,260,254,297,242}; int yC[] = {240,243,290,300,270}; g.drawPolygon(xC,yC,5); //图片 g.drawImage(samImage,250,50,this); } }
红色值 255 192 128 64 0 255 255 255 255 0 255 0 0
绿色值 255 192 128 64 0 0 1ห้องสมุดไป่ตู้5 200 255 255 0 255 0
蓝色值 255 192 128 64 0 0 175 0 0 0 255 255 255
JAVA 图形、图像与多媒体详解
第7章图形、图像与多媒体7.1 绘图基础要在平面上显示文字和绘图,首先要确定一个平面坐标系。
Java语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角。
一个坐标点(x,y)对应屏幕窗口中的一个像素,必须是整数。
如图7.1所示。
0.0 X·(30.30)Y图7.1 平面坐标系窗口大小由超文本文件中的width和height指定。
例如,以下超文本确定窗口宽为250像素,高位400像素:<applet code=h.class width=250 height=400> </applet>7.1.1 Graphics类的基本功能在java.awt包中,类Graphics提供的功能有:建立字体、设定显示颜色、显示图像和文本,绘制和填充各种几何图形。
可以从图形对象或使用Component的getGraphics()方法得到Graphics对象。
Graphics2D类继承Graphics类,并且增加了许多状态属性,使应用程序可以绘制出更加丰富多彩的图形。
在某个组件中绘图,一般应该为这个组件所需的子类重写paint(0方法,在该重写的方法中进行绘图。
但要在JComponent子类的组件中绘图,应重写paintComponent()方法,在该方法中进行绘图。
例如,继承定义一个文本区子类,要在这样的文本区对象中绘图,就应给这个文本区子类重写paintComponent()方法。
系统自动为程序通过图形对象,并以参数g传递给paint()方法和paintComponent()方法。
7.1.2 字型和颜色显示文字的方法主要有三种:(1)d rawString(String str,int x,int y),在指定的位置显示字符串。
(2)d rawChar(char date[],int offset,int length,int x,int y),在指定的位置显示字符数组中的文字,从字符数组的offset开始,最多显示length个字符。
第07讲 JAVA图形处理
在JAVA图形处理中几个常用的类:
Graphics Font Color Canvas 参见JAVA API
基本图形的输出
1、直线的输出 格式: drawLine(int x1,int y1,int x2,int y2); 使用当前颜色画一条从(x1,y1)到(x2,y2)的线段。 例7.2 演示: source\ex7\sources\2\MyDrawLine1.java
(2)弧形及扇形 弧是椭圆或圆的一剖分,因而画弧的方法就相当干先 画一个椭圆,而后取该椭圆中所需要的一部分。其调用 格式如下: drawArc ( int x, int y, int width int height , int startAngle, int arcAngle)画一段弧,其前4个参数的 含义与画椭圆一样,它确定了弧所在的椭圆的大小及位 置,第 5个参数 startAngle表示该弧开始位置的角度, 第 6个参数 arcAngle表示该弧转过的角度。角度的参照 系统规定水平向右为 00,逆时钟方向为正角度值.顺时 钟方向为负角度值。 fillArc ( int x, int y, int width int height , int startAngle, int arcAngle)绘制圆弧并将其包围的扇形 区域用前景色填充。 演示: source\ex7\sources\5\MyDrawArc1.java
Frame Label
Oval::Panel
Paint方法重 画Oval区域
文字
演示
source\ex7\sources\1\MyDraw1.java
教材P136 最后一行错误,删除掉
paint(Graphics g)方法的调用是由程 序运行的环境而不是程序本身来完成 的.每当一个AWT构件首次显示或在 部分显示己被破坏而必须刷新时该方法 被自动地调用。 显示的破坏可能发生在任何时刻.因 此.你的程序必须能在任意时刻更新显 示.
j-7 Java图形应用编程基础
显示最后一张卡片
void first(Container parent)
void last(Container parent)
void next(Container parent)
void previous(Container parent) void show(Container parent, String name)
add(buttonl); add(button3);
add(button2); add(button4);
注意: GridLayout 类 用 于 在 所 有 构 件 有 相 同 尺 寸 的 格 子 里 展 示 Container对象的构件。这种布局以指定行数和列数规定构件。 3、BorderLayout(边界布局管理器) 使用这种布局管理器,当添加一个部件到面板时需要指明其地 理方位( South 、 East 、 North 、 Center、West ),它也可 以有水平和垂直间隙。
public FlowLayout() 构造方法创建一个新的 FlowLayout管 理器对象以中心对齐并留以缺省的5个像素的水平和垂直间距。 public FlowLayout(int align) 构造方法以指定的定位方式、 缺省的水平和垂直间距创建一个新的FlowLayout管理器。
定位变元必须是 FlowLayout.LEFT FlowLayout.RIGHT 或 FlowLayout.CENTER 三者之一。 public FlowLayout(int align,int hgap,int vgap) 构造方 法以指定的定位方式和指定的水平和垂直间距创建一个新的 FlowLayout管理器对象。 align - 是定位值 hgap - 构件之间的水平间距 vgap - 构件之间的垂直间距
java课程设计画图完整源码
java课程设计画图完整源码一、教学目标本章节的教学目标是使学生掌握Java编程语言的基本知识,能够使用Java编写简单的图形用户界面程序。
具体目标如下:1.知识目标:–了解Java编程语言的基本语法和结构。
–掌握面向对象编程的基本概念和方法。
–了解Java图形用户界面编程的基本原理和常用组件。
2.技能目标:–能够使用Java编写简单的控制台程序。
–能够使用Java编写简单的图形用户界面程序。
–能够阅读和理解Java代码。
3.情感态度价值观目标:–培养学生的编程兴趣和自信心,使其能够主动学习编程知识。
–培养学生的问题解决能力和创新精神,使其能够通过编程解决实际问题。
二、教学内容本章节的教学内容主要包括Java编程语言的基本语法和结构、面向对象编程的概念和方法、Java图形用户界面编程的基本原理和常用组件。
具体内容如下:1.Java编程语言的基本语法和结构:–数据类型、变量和常量–运算符和表达式–控制语句(条件语句、循环语句)–函数和数组2.面向对象编程的概念和方法:–类和对象的概念–构造函数和析构函数–封装、继承和多态的概念和应用3.Java图形用户界面编程的基本原理和常用组件:–图形用户界面编程的基本原理和框架–常用组件(按钮、文本框、标签等)的使用和属性设置–事件处理和用户输入三、教学方法本章节的教学方法采用讲授法和实验法相结合的方式。
首先通过讲授法向学生介绍Java编程语言的基本语法和结构、面向对象编程的概念和方法、Java图形用户界面编程的基本原理和常用组件。
然后通过实验法让学生亲自动手编写代码,实践所学的知识,并通过实验过程中遇到的问题引导学生思考和解决问题。
四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于提供理论知识和编程技巧,多媒体资料用于辅助讲解和演示,实验设备用于学生动手实践。
教师需要根据学生的实际情况和教学要求选择和准备相应的教学资源,以支持教学内容和教学方法的实施,丰富学生的学习体验。
java 图形程序设计
第七章图形程序设计到目前为止,我们编写的程序都是通过键盘接受输入,在控制台屏幕上显示结果。
绝大多数用户并不喜欢这种交互方式。
现代的程序早已不采用这种操作方式,网络程序更是如此。
从本章开始,我们将介绍如何编写使用图形用户界面(GUI)的Java程序。
其中,主要讲述如何编写定义屏幕上的窗口大小和位置的程序,如何在窗口中采用多种字体显示文本,如何显示图像等等。
7.1Swing概述抽象窗口工具箱(Abstract Window Toolkit,AWT):采用将处理用户界面元素的任务委派给每个目标平台(Windows,Solaris,Macintosh等等)的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面元素的创建和动作。
IFC(Internet Foundation Class)的GUI库:采用了与AWT完全不同的工作方式,它将按钮、菜单这样的用户界面元素绘制在空白窗口上,而对等体只需要创建和绘制窗口。
因此,IFC不见在程序运行的所有平台上的外观和动作都一样。
Sun与Netscape合作完善了这种方式,创建了Swing的用户界面库。
注意:Swing没有完全替代AWT,而是基于AWT构架之上。
Swing仅仅提供了能力更加强大的用户界面组件。
尤其在采用Swing编写的程序中,还需要使用基本的AWT处理事件。
从现在开始,Swing是指“被绘制的”非对等体用户界面类;“AWT”是指像事件处理这样的窗口工具箱的底层机制。
7.2创建框架在Java中,顶层窗口(没有包含在其他窗口中的窗口)被称为框架(frame)。
在AWT库中有一个称为Frame的类,用于描述顶层窗口。
这个类的Swing版本名为JFrame,它扩展与Frame类。
JFrame是极少数几个不绘制在画布上的Swing组件之一。
因此,它的修饰部件(按钮、标题栏、图标等)由用户的窗口系统绘制,而不是由Swing绘制。
例:在一个屏幕中显示一个空框架例7-1SimpleFrameTest.javaimport javax.swing.*;public class SimpleFrameTest{ public static void main(String[] args){SimpleFrame frame=newSimpleFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}class SimpleFrame extendsJFrame{public SimpleFrame(){setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);}public static final int DEFAULT_WIDTH=300;public static final int DEFAULT_HEIGHT=200;}在默认情况下,框架的大小为0*0像素,这种框架没有实际意义。
Java GUI编程PPT教学课件
2020/12/10
1
教学目标
图形用户界面(GUI)是程序的一种图示界面。
优秀的GUI通过给程序提供一致的外观和直观的
控件(例如按钮、滑动块、下拉列表和菜单等),
使得程序使用起来非常容易。Java API包含两种
不同类型的图形用户界面,“老的GUI”通常称为
抽象窗口工具包(AWT)GUI,它是在Java SDK
调用并传递参数
监听者实现接口:
2020/12/10
public void actionPerformed(ActionEvent e)
9
鼠标和键盘事件
♣ 鼠标事件类MouseEvent和键盘事件类KeyEvent都是
InputEvent类的子类,InputEvent类不包含任何具体的 事件,但是调用InputEvent类的getModifiers()方法,并 把返回值与InputEvent类的几个静态整型常量 ALT_MASK,CTRL_MASK,SHIFT_MASK, META_MASK,BUTTON1_MASK,BUTTON2_MASK, BUTTON3_MASK相比较,就可以得知用户在引发 KeyEvent事件时是否同时按下了功能键,或者用户单击 鼠标时所单击的是左键还是右键。
8
事件处理模型
♣事件处理由3个组成部分:事件源、事件对
象和事件监听者。
♣Java的事件处理机制中引入了委托事件模
型,不同的事件由不同的监听器处理,如
图所示的是ActionEvent事件的处理模型。
事件源 注册:btn.addActionListener(监听者对象)
注册
触发事件
ActionEvent 事件
♣java.awt包是java基本包中最大的一个包,
Java程序设计教程 第7章-Java GUI编程技术
7.2.1 java.awt简介
7.2 java.awt编程技术
Java程序设计
7.2 java.awt编程技术
7.2.2 Component类
❖Component类是java.awt包中最核心、最基本的类。Component类是构成Java图形用 户界面的基础,大部分组件都是由该类派生出来的。Component类是一个抽象类,其 中定义了组件所具有的一般功能,可在屏幕上显示,并可与用户进行交互,其子类如 按钮、文本框等。 ❖Component类定义的方法如下: ❖基本的绘画支持:paint(), repaint(), update()等; ❖字体和颜色等外形控制:setFont(), SetForeground()等; ❖大小和位置控制:SetSize(), SetLocation()等; ❖图像处理:实现接口ImageObserver; ❖组件状态控制(SetEnable, isEnable, isVisible, isValid等。
Java程序设计
7.2 java.awt编程技术
7.2.1 java.awt简介
❖java.awt包提供很多类和接口,包括: ❖基本组件(Component):构成GUI界面的基本元素,具有坐标位置、尺寸、字体、颜 色等属性,能获得焦点、可被操作、可响应事件等。 ❖容器类组件(Container):用来盛放组件的组件等。 ❖2D图形绘制组件(Graphics):提供在组件上绘制图形的方法。 ❖布局管理器(LayoutManager):用来安排容器中组件的位置和大小。 ❖事件处理模型:用来响应图形界面组件所触发的事件。
Java程序设计
7.1 GUI编程的Java实现
7.1.2 swing
JAVA程序设计教程第7章 图形用户界面编程
JDialog是Dialog类的子类,该类所创建的对话框对象 也是重量容器。创建的JDialog对象可以用来向用户返回信 息,接收用户的输入,实现与用户的交互。但JDialog与 JFrame窗口的区别在于:JDialog对象需要依赖于其他的窗 口(比如Jframe)而存在,当它所依赖的窗口关闭或最小化 的时候,该对话框也随之关闭或最小化;当窗口还原时,对 话框窗口也随之还原。对话框分为如下所示的两种模式。 响应模式:只让程序响应对话框的内部事件,而对于对 话框以外的事件则不予响应; 非响应模式:该模式可以让程序响应对话框以外的事情 。
第7章 图形用户界面编程
前面章节介绍的例子中,输入输出都是通过命令提示符 窗口(控制台)来完成的,对程序的使用者而言不美观也不 是很友好,从本章开始将介绍如何编写带有图形用户接口( GUI)的Java程序。目前在开发图形用户接口的应用时,使 用最多的就是Swing技术。本章将对Swing技术做一个简单的 介绍,使读者对Swing的开发有一个基本认识。
7.1 Swing和AWT的对比
Swing是Sun公司推出的第二代图形用户接口工具包,通 过Swing可以开发出功能强大、界面优美的客户应用程序。 Swing中不但提供了很多功能完善的控件,而且其还具有良好 的扩展能力,用Swing来进行交互界面的开发是一件另开发人 员非常愉快的工作。 Swing从诞生到现在大致经历了如下几个阶段。 Swing项目是从1996年年底开始的,在项目开始的同时所 有的参与者共同选定了这个名称,目的就是开发一个不依赖于 本地系统的图形用户接口工具包。 1997年后半年Swing进入测试阶段,并在1998年春随同 JDK 1.1首次发行,对于JDK 1.1之前的版本,是不能使用 Swing库的。 Swing从首次发行开始,就不断快速地成长,自JDK 1.2 之后,便被完全集成到了Java的标准类库中,成为Java基础类 库(JFC)大家族中的一个重要组成部分。
第七章java图形12节
在程序中安排组件的位置和大小时,应该注意以下两 点: 1.容器中的布局管理器负责各个组件的大小和位 置,因此用户无法在这种情况下设置组件的这些属 性。如果试图使用Java 语言提供的setLocation(), setSize(),setBounds() 等方法,则都会被布局 管理器覆盖。 2.如果用户确实需要亲自设置组件大小或位置, 则应取消该容器的布局管理器,方法为: setLayout(null),然后再调用setLocation(), setSize(),setBounds()等方法。
AWT包中主要类之间的关系
8
Swing组件
Java在1998年5月发布的JFC包含了一个 新的图形用户界面开发包。这个新的图 形用户界面组件叫做Swing组件。
Swing的出现是为了解决AWT的移植性和 提供更多的企业级应用程序所需要的功 能。
Swing是一个用于开发Java应用程序用户 界面的开发工具包。
9
一、 构件类
Java的图形用户界面的最基本组成部分是构件 (Component),构件是一个可以以图形化的方式 显示在屏幕上并能与用户进行交互的对象,例如一 个按钮,一个标签等。 构件的特点:构件不能独立地显示出来,必须将构 件放在一定的容器中才可以显示出来。 类ponent是许多构件类的父类, Component类中封装了构件通用的方法和属性,如 图形的构件对象、大小、显示位置、前景色和背景 色、边界、可见性等,因此许多构件类也就继承了 Component类的成员方法和成员变量。
Font.PLAIN Font.BOLD Font.ITALIC
//常规 //加粗 //倾斜
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解释
依据两端的坐标(x1,y1),(x2,y2)绘制直线 依据左上角坐标(x,y)宽度width高度height绘制矩形 清除左上角坐标(x,y)宽度width高度height决定的矩形
public abstract void fillRect(int x,int 依据左上角坐标(x,y)宽度width高度height绘制填充矩 y,int width,int height) 形 矩形 public abstract void drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight) public abstract void fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight) public void draw3DRect(int x,int y,int width,int height,boolean raised) public void fill3DRect(int x,int y,int width,int height,boolean raised) 依据左上角坐标(x,y)宽度width高度height绘制圆角矩 形,圆角的大小由参数arcWidth和 arcHeight决定 依据左上角坐标(x,y)宽度width高度height绘制填充的 圆角矩形,圆角的大小由参数arcWidth和 arcHeight决定 依据左上角坐标(x,y)宽度width高度height绘制立体矩 形,参数raised决定矩形是凸的还是凹的 依据左上角坐标(x,y)宽度width高度height绘制立体的 填充矩形,参数raised决定矩形是凸的还是凹的
表7-2 画布类Canvas常用方法
常用方法
public void paint(Graphics g) public void repaint() 由 Component 类继承来 public void setBackground(Color c)
解释
Canvas类的自动绘图方法 调用paint(Graphics g) 设置画布的背景色
表7-1 画布类Canvas的构造方法
构造方法
解释
public Canvas()
创建一个画布
7.1 Java绘图基础
7.1.3 paint方法和repaint方法
Canvas类最重要的方法是paint方法,一般在画布上绘图时总是要重写 paint方法。另一个重要的方法是repaint方法,repaint与paint不同, paint方法是由系统自动调用的,而repaint方法必须由程序显式地调用。 有一点需要注意的是,创建一个画布对象后必须用public void setSize(int width, int height) 方法设置画布的大小,否则画布是看不 见的。表7-2列出了画布类Canvas的常用方法。
public void setSize(int width,
int height) 设置画布的大小
7.1 Java绘图基础
本书中绘图程序主要以Applet为容器。以下分别给出以 Canvas为容器和以Applet为容器的绘图实例,用以示范两种不同 方式的绘图方法。 实例 实例 在Canvas上绘图 在Applet上绘图
7.1 Java绘图基础
7.1.2 画布类Canvas 画布就是屏幕上的一个用于绘图的空白矩形区域,程序不仅 可以在画布上绘图,也可以捕获画布上的事件,例如鼠标事件和 键盘事件等。在对于Java Application程序,画布Canvas是主要 的绘图容器,画布类Canvas是组件类Component的子类,是一种比 较简单的类,表7-1给出了Canvas类最常用的构造方法。
本章学习目标
本章介绍使用Java绘图和在Java中使用图像的方法。学习的 主要目标是: •了解绘图容器与坐标系的概念。 •掌握Canvas类、Graphics类的基本用法,掌握在组件上绘图 的基本步骤,掌握使用Graphics类绘图、绘制字符、显示图 片。 •掌握绘制任意函数曲线的编程方法,理解徒手绘图和橡皮筋 画法的基本思路,理解使用连续位图形成动画的思路的编程 方法。
7.1 Java绘图基础
7.1.1 绘图容器与坐标系 Java的绘图是在容器上进行的,每一 个容器都有一个默认的坐标系,该坐标系 以容器的左上角为坐标原点(0,0),X轴 水平向右,Y轴竖直向下,长度单位为像素, 如图7-1所示。注意Y轴的默认方向与解析 几何学中设置坐标系的习惯是不同的。 图7-1 默认的坐标系 虽然在各种组件上都能绘图,但是常用的绘图容器只用两种。 如果是Java Application程序,通常使用的是画布Canvas作为绘 图容器。如果是Applet程序,通常使用的就是Applet作为绘图容 器,因为Applet本身就是一种容器。
7.1 Java绘图基础
7.1.4 绘图类Graphics
Graphics类是一个比较特殊的抽象类,无须通过new实例化直接可 以使用。使用Graphics类绘图要依附于一个组件,常用的是Applet和 Canvas,程序运行时系统都会自动地调用二者的paint()方法完成绘图 工作。 如果声明的类是组件类Component的子类,可以通过重写 paint(Graphics g)方法,并利用Graphics的g对象进行绘图,这是大多 数的情况。如果声明的类不是组件类Component的子类,就没有 paint(Graphics g)方法供系统自动调用,这时必须使用getGraphics() 方法获取一个Graphics对象,然后利用这个对象绘图。 Graphics类提供了几十个绘图方法,可以完成绝大多数的绘图工作, 表7-3给出了常用的绘图方法。由于Graphics类特殊性,一般不使用其 构造方法来创建实例对象,所以以下只介绍用于绘图的实例方法。
7.1 Java绘图基础
表7-3 绘图类Graphics的常用方法
分类
直线
常用方法
public abstract void drawLine(int x1,int y1,int x2,int y2) public void drawRect(int x,int y,int width,int height) public abstract void clearRect(int x,int y,int width,int height)