项目八 显示时钟.

Slides:



Advertisements
Similar presentations
第 2 章 Java 运行环境搭建 2.1 Java 的运行系统 2.1 Java 的运行系统 2.2 JDK 的安装与配置2.2 JDK 的安装与配置 2.3 Java 开发工具包 2.4 Java 源文件编辑环境的选择 2.5 Application 和 Applet 程序的编写与运行.
Advertisements

Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
面向侧面的程序设计 方林博士 本文下载地址:
软件编程基础 Java Applet 是另一类非常重要的 Java 程序, 虽然它的源代码编辑与字节码的编译生成过程与 Java Application 相同,但它却不是一类可以独立运 行的程序,相反,它的字节码文件必须嵌入到另一 种语言 HTNI 的文件中并由负责解释 HTML 文件的 WWW 浏览器充当其解释器,来解释执行.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第1章 Java语言概述.
《 Java开发环境配置》 主讲人:耿力.
Java 2实用教程(第3版)教学课件 主讲教师:张国平
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
Java程序设计教程 第一讲 Java概述.
Web技术 第8章 Applet应用 龚涛 东华大学信息科学与技术学院 2016年3月 教材:《JSP程序员成长攻略》
Java System Concepts and Animation Programming
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
第19讲 applet程序设计 1/.
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
UI(用户界面)集训班 Illustrator 高级班.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十二章 Java Applet.
Java Applet的运行原理 在网页向Java Applet传值 在Java Applet中播放声音 在Java Applet中使用组件
第11章 Java多媒体技术.
第14章 图形与图像 14.1 绘制文本 14.2 绘制基本图形 14.3 建立字体 14.4 清除 14.5 Java 2D
面向对象技术Java Object-Oriental Technology Java
项目8员工创意涂鸦室.
Java程序设计 第九章 多媒体与图形学程序设计 授课教师:赵小敏 浙江工业大学 软件学院 JAVA
第 18 章 圖形使用者介面.
第1章 java简介及环境搭建 第1章 Java简介及开发环境搭建.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第九章 字符串.
第11章 图形与多媒体处理 11.1 基本图形 11.2 画布 11.3 文字输出 11.4 颜色控制 11.5 图像处理
Ch02 視窗Swing套件 物件導向系統實務.
Java语言程序设计-JAVA图形与图像处理
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
Java Applet 介绍.
Ch07 Java Applets 物件導向系統實務.
武汉纺织大学传媒学院 cm.wtu.edu.cn
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
窗体图形图像处理与 Applet程序设计 主讲:赖国荣 QQ:
项目五 窗体上绘图 任务列表: 1、在窗体上绘制各种基本图形 2、在窗体上绘制文本.
Chapter 9 設計的精細製作: 行動計算 Software Engineering – An Engineering Approach, James F. Peters & Witold Pedrycz.
走进编程 程序的顺序结构(二).
辅导课程六.
第八章 Applet小应用程序.
Java语言程序设计 第八部分 Applet小程序.
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
資訊學科中心研習 JAVA程式設計專題 臺北市立大理高級中學 黃世隆 2019/2/23.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
Java程序设计 第13章 图形.
3.3 垂径定理 第2课时 垂径定理的逆定理.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
Java语言程序设计 清华大学出版社 第6章 java图形与图像处理.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
Applet.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第三章 图形的平移与旋转.
5.1 Applet的基本概念 5.2 Applet的编写 5.3 Applet的多媒体支持
Summary
变量定位图形 Java中数据的类型分为四种:基本数据类型、数组类型、类类型以及接口类型。任何常量和变量都一定是上述四种数据类型中的一种。简单数据类型的实例化有两种:变量和常量。 变量名和常量名必须是Java语言中合法的标识符。 常量是在程序运行期间值不改变的量。 变量是在程序运行期间值可通过赋值改变的量,
Presentation transcript:

项目八 显示时钟

1 项目介绍 用浏览器显示一个时、分、秒指针随时间不断变化 的时钟,在小应用程序查看器中运行

9.2 Graphics2D类 Java 2D拥有强大的二维图形处理能力,这些功能 主要是由Graphics2D类来完成的,该类是 Graphics类的一个子类。它的特点是把所绘的 图形当成一个对象来处理,绘制前先创建对象。 9.2.1绘制2D直线 调用格式:先创建2D线形对象:Line2D line=new Line2D.Double(double x1,double y1,double x2,double y2); 然后再绘制2D直线line。 作用:绘制一条二维直线。 参数说明:x1,y1——二维直线的起始坐标;x2,y2——二维 直线的终点坐标。 举例如下:

例9. 15 import java. awt. ; import java. applet. ; import java. awt 例9.15 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_line extends Applet { public void paint(Graphics g) { Graphics2D d2; d2=(Graphics2D)g;//转换d为2D对象 d2.setColor(Color.red); Line2D line=new Line2D.Double(100,10,100,300);//创建line对象 d2.draw(line);//画出2D直线 d2.setColor(Color.blue); Line2D line1=new Line2D.Double(0,300,100,300);//创建line对象 d2.draw(line1);//画出2D直线 } 运行效果如下:

9.2.2 绘制2D矩形 调用格式:先创建2D矩形对象:Rectangle2D rect=new Rectangle2D.Double(double x1,double y1,double width,double height); 然后再绘制2D矩形。 作用:绘制一个2D矩形。 参数说明:x1,y1——2D矩形的左上角坐标; width,height——2D矩形的宽和高。 举例如下:

例9. 16 import java. awt. ; import java. applet. ; import java. awt 例9.16 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet {public void paint(Graphics g) { Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); Rectangle2D rect=new Rectangle2D.Double(40,50,250,300);//创建矩形对象 d2.draw(rect);//画出矩形 d2.setColor(Color.blue); Rectangle2D rect1=new Rectangle2D.Double(80,100,250,300);//创建矩形对象 d2.draw(rect1);//画出矩形 } 运行效果如图:

9.2.3 绘制2D圆角矩形 然后再绘制2D圆角矩形。 举例如下: 调用格式:先创建2D圆角矩形对象: RoundRectangle2D r_rect=new RoundRectangle2D.Double(double x1,double y1,double width,double height , double arcw,double arch); 然后再绘制2D圆角矩形。 作用:绘制一个2D圆矩形。 参数说明:x1,y1,width,height——分别为 2D圆角矩形的左上角坐标、宽和高; arcw,arch——分别为圆角的长轴和短轴。 举例如下:

例9. 17 import java. awt. ; import java. applet. ; import java. awt 例9.17 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet {public void paint(Graphics g) {Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); RoundRectangle2D rect=new RoundRectangle2D.Double(40,50,50,30,20,20);//创建 矩//形对象 d2.draw(rect);//画出矩形 d2.setColor(Color.blue); RoundRectangle2D rect1=new RoundRectangle2D.Double(80,100,50,30,20,20);//创建 //矩形对象 d2.draw(rect1);//画出矩形} } 运行效果如图:

9.2.4 绘制椭圆 调用格式:先创建2D椭圆对象:Ellipse2D ellipse=new Ellipse2D.Double(double x1,double y1,double width,double height ); 然后再绘制2D椭圆。 作用:绘制一个2D椭圆。 参数说明:x1,y1,width,height——分别为2D椭 圆的左上角坐标、宽和高。 举例如下:

例9. 18 import java. awt. ; import java. applet. ; import java. awt 例9.18 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet { public void paint(Graphics g) Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); Ellipse2D ellipse =new Ellipse2D.Double(10,10,100,200);//创 建椭圆对象 d2.draw(ellipse);//画出椭圆 // d2.setColor(Color.blue); Ellipse2D ellipse1=new Ellipse2D.Double(20,20,100,200);//创 建椭圆对象 d2.draw(ellipse1);//画出矩形 } 运行效果如图:

9.2.5 绘制2D园弧 调用格式:先创建2D圆弧对象:Arc2D arc=new Arc2D.Double(double x1,double y1,double width,double height ,double starang,double endang,arc2D.pie); 然后再绘制2D圆弧。 作用:绘制一条2D圆弧。 参数说明:x1,y1,width,height—2D圆弧外 接矩形的左上角坐标、宽和高。 Starang,ending——圆弧的起始角和终止角, 单位为“度”。最后一个参数的取值为: Arc2D.OPEN、Arc2D.PIE、Arc2D.CHORD分 别代表开弧、饼弧、弓弧。 举例如下:

例9. 19 import java. awt. ; import java. applet. ; import java. awt 例9.19 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Arc extends Applet { public void paint(Graphics g) {Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); Arc2D arc1=new Arc2D.Double(20,30,80,55,0,90,Arc2D.OPEN);//创建对象 d2.draw(arc1);//画出开弧,红色 d2.setColor(Color.blue); Arc2D arc2=new Arc2D.Double(40,30,80,55,0,90,Arc2D.PIE);// 创建对象 d2.draw(arc2);//画出饼弧,蓝色 d2.setColor(Color.green); Arc2D arc3=new Arc2D.Double(80,30,80,55,0,90,Arc2D.CHORD);//创建对象 d2.draw(arc3);//画出弓弧,绿色 } 运行效果如图:

9.2.6 绘制二次曲线 调用格式:先创建2D二次曲线对象:QuadCurve2D draw_c=new QuadCurve2D.Double(double x1,double y1,double x2,double y2,double x3,double y3 );然后再绘制二次曲线。 作用:绘制二次曲线。 参数说明:x1,y1,x2,y2——分别为两个端点坐标。 X3,y3——控制点坐标。 举例如下:

例9. 20 import java. awt. ; import java. applet. ; import java. awt 例9.20 import java.awt.*; import java.applet.*; import java.awt.geom.*; public class draw_2d_Rect extends Applet {public void paint(Graphics g) {Graphics2D d2; d2=(Graphics2D)g;//转换g为2D对象 d2.setColor(Color.red); QuadCurve2D draw_c1=new QuadCurve2D.Double(10,50,100,100,20,40);//创建对象 d2.draw(draw_c1);//画出 d2.setColor(Color.blue); QuadCurve2D draw_c2=new QuadCurve2D.Double(20,60,100,100,40,80);//创建对象 d2.draw(draw_c2);//画出 d2.setColor(Color.green); QuadCurve2D draw_c3=new QuadCurve2D.Double(30,70,100,100,80,160);//创建对象 d2.draw(draw_c3);//画出 } } 运行效果如图:

9.3 Color类 java语言的颜色类——Color类为我们定义了丰富 的颜色值常量和颜色值产生的方法,能够让我们控 制各种色彩的显示。其每一种颜色都是由“红-绿- 蓝”三原色合成。

9.3.2 Color类中的常用方法 1 Color() 调用格式:public color(int red,int green,int blue) 作用:配置颜色。 参数解释:red,green,blue——分别为配置三 原色(红、绿、蓝)的色值。 举例如下:

例9. 21 import java. awt. Graphics; import java. applet 例9.21 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class circle { protected int x,y,width,height; circle() x=35; y=35; width=50; height=100; } public class showcircle extends Applet circle t=new circle(); public void paint(Graphics g) Color co=new Color(255,0,0); g.setColor(co); g.drawOval(t.x+150,t.y+150,t.width,t.height); Color co1=new Color(0,0,255); g.setColor(co1); g.fillOval(t.x,t.y,t.width,t.height); 运行效果如图:

2 Getred() 调用格式:public int getred() 作用:返回当前色值中的红色含量值。 3 Getblue() 调用格式:public int getblue() 作用:返回当前色值中的蓝色含量值。 4 GetGreen() 调用格式:public int getGreen() 作用:返回当前色值中的绿色含量值。 以上三个方法举例如下:

例9. 22 import java. awt. Graphics; import java. applet 例9.22 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class showcircle extends Applet { public void paint(Graphics g) Color co=new Color(255,0,0); g.setColor(co); Color c=g.getColor(); g.drawString("红色含量值"+c.getRed(),10,20); g.drawString("绿色含量值 "+c.getGreen(),10,40); g.drawString("蓝色含量值 "+c.getBlue(),10,60); }

5 Setcolor() 调用格式:public abstact void Setcolor( Color c) 作用:设置当前颜色值。 参数解释:c——颜色值。 运行事例参看“例19”。 6 Getcolor() 调用格式:public abstact color getcolor() 作用:返回当前颜色值。 举例如下:

例9. 23 import java. awt. Graphics; import java. applet 例9.23 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class showcircle extends Applet { public void paint(Graphics g) g.setColor(g.getColor()); g.fillOval(20,30,40,50); }

9.4 Font类 在前面章节的很多例子中我们都使用了输出 文本的方法。在没有设置字体、字型号的 情况下,其输出都是采用的默认字体和字 型号。在java语言中,我们可以通过Font 类来设定不同的输出字体、字型号,使我 们的界面更美观、更漂亮。下面我们就 Font类的使用做一详解。 Java语言中,设置字体输出的操作顺序一般 是:先用Font类创建字体对象,然后用 setFont()方法设置输出字体,最后用 drawString()输出结果。

9.4.1 利用Font类建立字体 1 Font类建立字体调用格式: Font crea_Font=new Font(string font_name,int font_style,int font_size) 2 参数说明: font_name——字体的名称。如:“SansSerif”、 “Times”、“黑体”、“宋体”等。 font_style——字体的样式。如:Font.PLAIN(正常 体)、Font.BOLD(加粗体)、Font.ITALIC(斜 体)等。 font_size——字体大小的磅值,是一个数字。如: 10、12、14、18、20等。 创建字体的使用举例:

例9. 24 import java. awt. Graphics; import java. applet 例9.24 import java.awt.Graphics; import java.applet.*; public class showfont extends Applet { Font font1=new Font(“Times New Roman”,Font.BOLD,14); Font font2=new Font(“SansSerif”,Font.ITALIC,48); Font font3=new Font(“Serif”,Font.PLAIN,60); public void paint(Graphics g) g.setFont(font1); g.drawstring(“这是Times New Roman字体”,20,30); g.setFont(font2); g.drawstring(“这是SansSerif字体”, 60,30); g.setFont(font3); g.drawstring(“这是Serif字体”, 80,30); } 运行效果如图:

9.4.3输出字体的方法drawstring() 9.4.2设置字体的方法setFont() 1、作用:设置当前输出字符串的字体。 2、setFont()调用格式: public void setFont(Font font) 3、参数说明:font——字体对象。 事例参看例9.24。 9.4.3输出字体的方法drawstring() 1、作用:按当前设定的字体输出字符串。 2、setFont()调用格式: public void drawstring(string s,int x,int y) 3、参数说明:s——输出的字符串。X,y——字符 串的输出坐标(x,y)

9.5 图像的处理 Java语言支持两类格式的图像处理,它们是GIF格 式与JPEG格式。与图形处理不同的是图形处理 是Java程序绘制出来的,而图像是用其他工具生 成的特殊二进制文件。 Java语言处理图像的一般步骤是:先加载图像, 然后输出图像。 9.5.1 加载图像 加载图像常在程序的初始化方法中进行,使用的 方法是getImage()。 1、调用格式:getImage(URL ur,String Fname) 2、作用:加载指定的图像文件。该方法有返回值, 返回值是一个Image对象。 3、参数解释:ur——URL(Universal Resource Locator)类的对象,用于指出图像文件所在的地 址。Fname——图像文件名称。

9.5.2 输出图像 显示使用的方法是drawgetImage()。 1、调用格式:drawImage(Image img,int x,int y,int width,int height,Color bcolor,ImageObserver observer) 2、作用:将加载的图像显示与指定位置。 3、参数解释: img——显示的图像。 X,y——图像显示位置的左上角坐标。 Width,height——图像实际显示时的高度、宽度。 bcolor——图像显示区域的背景色。 Observer——图像加载跟踪器。其值常设为this, 用以表示用Applet做跟踪器。 以上两个显示图像的方法结合起来举例如下:

例9. 25 import java. awt. ; import java. applet 例9.25 import java.awt.*; import java.applet.*; public class show_image extends Applet { Image img; public void init(){ img=getImage(getCodeBase(),"Fish.jpg" ); }// getCodeBase()用于指定当前路径 public void paint(Graphics g) { g.drawImage(img,30,20,this); } 运行效果如图:

本章小结: 本章主要讲述了java语言的Graphics类的使 用方法。通过本章的学习,我们应能参照本章许多 事例掌握Graphics类各种画图方法的使用,达到灵 活运用的目的。

任务一:认识小程序

什么是Applet Java Applet是Java的一种可运行代码。 Java Applet在支持Java虚拟机的浏览器环境中运行。 它是Java与Web相结合而引入的一种重要的Java应 用形式 。

Applet与Application Application和Applet是利用JAVA语言生成的可运行代码 中最常用的两种 Application以控制台方式运行,以main()方法作为程序 执行的入口 Applet本身不能直接运行,必须嵌入到浏览器中,由浏览 器加载执行。 第32页

Java Applet基础 下面我们通过一个例子来说明一个Java applet 的全过 程:Example 2.编译. 生成.class 文件 3.运行. 编写一个超文本文件,告诉浏览器运行该applet。 <applet code=A.class height=300 width=200> </applet> <applet…>和</applet>告诉浏览器将运行一个Java Applet,其中详细内容参阅教材271页。

Java Applet的基本框架 Applet的基本框架由一套方法组成。 public void init() public void start() public void stop() public void paint(Graphics g) public void destroy() 第34页

Java Applet的生命周期 初始态 消亡态 停止态 运行态 第一次载入 调用init()方法 运行 调用start()方法 调用stop()方法 当浏览器图标化或打开另一页 当浏览器从图标恢复或重新装入此页 调用start()方法 当前页面被关闭或浏览器关闭 调用destroy()方法 第35页

Java applet 主类对象由浏览器打开超文本文件,发现 有applet标记时创建,大小由width和height确定。 主类的实例本身是容器,有 x 相应的坐标系统,单位是像 素,原点是容器的左上角, y 可以使用add()方法放置组件。 下述的五个方法会在特定的情况下由小程序主类对象 自动调用。 主类对象

Java Applet基础 初始化init()方法 1)对象首先自动调用init()方法,完成必要的初始 化操作 2)主要任务:创建所需对象,设置初始状态,装 载图像,设置参数等。 3)格式:public void init(){……} 4)init()方法只被调用一次。

Java Applet基础 启动start()方法 1)初始化后,紧接着自动调用start()方法。 2)start()方法将多次被自动调用执行,除进入执 行过程时调用方法start()外,当用户从applet所在 的web页面转到其他页面,然后又返回时, start() 方法将再次被调用,但不再调用init()方法。 3)格式:public void start(){……}

Java Applet基础 停止stop()方法 1)当浏览器离开java applet所在的页面转到其他 页面时,stop()方法被调用。 2)可多次调用。 3)若没有定义stop()方法,则当用户离开java applet页面时,java applet 将继续使用系统资源, 若定义了stop()方法,则可以挂起applet的执行。 4)格式:public void stop(){……}

Java Applet基础 删除 destroy()方法 当浏览器结束浏览时,执行destroy()方法,结 束applet的生命。 描绘 paint (Graphics g)方法 1)可以使一个applet在屏幕上显示某些信息,如文字、色彩、背景、 图像等。 2)可以多次调用。如:遮挡重现、改变窗口大小、本身需要显示 信息等(自动调用) 3)参数g,可以理解为一个画笔。 见例题Example1

Java Applet基础 play(URL soundDirectory, String soundfile); repaint()方法 方法repaint()首先调用update()清除paint()方法 以前所画的内容,然后由update()再调用paint() 方法。 Applet对多媒体的支持——声音播放 方法1:通过Applet类中的play()方法播放声音: play(URL soundDirectory, String soundfile); play(URL soundURL); 方法2: 使用java.applet.AudioClip类 AudioClip类中定义了一些播放声音有关的方法: play()、loop()、stop()

Java Applet基础 Applet类中提供了方法 注意: 见例AudioPlay、AudioLoop getAudioClicp(URL directory ,String sound) 该方法用来得到一个AudioClicp对象,其参数URL可由方 法:getCodeBase()、getDocumentBase()得到。 注意: 只有applet可以播放声音,application不行 只支持“.au”的声音文件格式 见例AudioPlay、AudioLoop 面向对象程序设计Java 黑龙江大学软件学院 版权所有© 2009

Applet程序的运行 方法一: JDK提供的浏览Applet的简易工具 ( JDK\bin目录): appletviewer 方法二:用浏览器运行 第43页

Applet与GUI Applet类为JPanel的子类,而JPanel为Java图形用 户界面中的一个组件。因此Applet可以使用图形化 用户界面与用户进行数据交换。 良好的用户界面是Applet的一个重要的优势。 第44页

任务二:在小应用程序中绘图

1 小应用程序 包含Swing组件的小应用程序必须继承 javax.swing.JApplet。 JApplet是Applet的子类,它继承了Applet的成员 方法,JApplet的小应用程序中只能加载Swing组件。 由于本书以Swing讲解GUI编程,因此下面只讲解 JApplet小应用程序

1 小应用程序 JApplet程序编写以后,还要编写一个加载该程序 的html文件,其中必须包含一对下列格式的applet 标签: <applet code=”.class文件名” width = 宽度值 height = 高度 值> </applet>

2 在小应用程序中绘图 JPanel经常用作中间容器组织界面上组件的布局, 此外,它的另一个重要用途是绘图。虽然绘图也可 以调用paint( )方法实现,但调用paint( )方法可能 影响其它组件。 在面板上绘图需要创建一个类继承JPanel,并覆盖 下列方法: protected void paintComponent(Graphics g)

2 在小应用程序中绘图 使用paintComponent( )方法有下列注意事项: 为了确保绘图区域是干净的,用户覆盖这个方法时, 应该通过super.paintComponent( g)调用超类的 方法。 paintComponent( )方法是用户无法调用的,只能由 虚拟机调用。 组件第一次显示或重新显示时,paintComponent( ) 方法被自动调用。 如果需要重新运行paintComponent( )方法,用户可 以调用repaint()方法,该方法使虚拟机调用 paintComponent( )方法

2 在小应用程序中绘图 Graphics中定义了很多绘图的方法, paintComponent( )方法中可以调用这些方法绘图。 常用的方法有: void setColor(Color c) //设置画笔颜色 void setFont(Color c) //设置画笔字体 void drawString(String text, int x, int y) //从坐标(x,y)开始显示文本text void drawLine(int x1, int y1, int x2, int y2) //从坐标(x1,y1)到坐标(x2,y2)画直线 void drawRect(int x, int y, int w, int h) //画空心矩形,(x,y)是左上角坐标,w、h是宽和高 void fillRect(int x, int y, int w, int h) //画填充颜色的矩形 void drawOval(int x,int y,int w,int h) //画空心椭圆,(x,y)是外接矩形左上角,w、h是宽和高 void fillOval(int x, int y, int w, int h) //画填充颜色的椭圆

3 实现项目程序 这样我们可以按照下列步骤完成时钟程序: 定义一个类ClockPanel继承JPanel,并覆盖 paintComponent()方法。 在ClockPanel的构造方法中创建定时器Timer对象,由 面板类自己监听该对象发出的ActoinEvent事件,因此 面板类必须实现ActionListener接口,覆盖 actionPerformed()方法,并在方法中调用repaint()方 法。这样,每次Timer对象发出事件后,都运行 repaint(),该方法调用paintComponent()重新绘图。 在paintComponent()中绘制时钟刻度盘,并根据具体 时间绘制秒针、分针、时针。 定义类ClockApplet继承Japplet,在init()方法中创 建并加载ClockPanel对象。

补充:Java 2D绘图 要点: 1、Graphics类 2、Graphics2D类 3、Color类 4、Font类 5、图像的处理

Graphics类-- 绘制直线 graphics类绘制直线的方法是drawLine() 调用格式为:drawLine(int x1,int y1,int x2,int y2) 作用:自(x1,y1)点开始至 (x2,y2)点结束绘制一条 直线。 方法中参数解释:X1,y1,x2,y2分别为所绘直线的 起始点坐标(x1,y1)和终止点坐标(x2,y2)。

举例如下: 例1:drawLine(2,3,2,7) 此语句的作用是绘制出一条起始点坐标为(2,3)和终止点坐标为(2, 7)的直线。 例2: import java.applet.*; import java.awt.*; public class Draw_line extends Applet { public void paint(Graphics g) { g.setColor(Color.red); g.drawLine(2,4,12,400); g.drawLine(40,80,100,200); g.drawLine(0,0,500,500); }

Graphics类--绘制矩形 graphics类绘制矩形的方法有四个,它们分别为 drawRect()、fillRect()、drawRoundRect ()、fillRoundRect()。 drawRect() 调用格式:drawRect(int x,int y,int width,int height) 作用:以(x,y)为矩形的左上角顶点,绘制一个宽、高 分别为width和height的矩形。 方法中的参数解释如下: x,y——所绘制矩形左上角坐标。 Width,height——所绘制矩形的宽和高。

该方法的使用举例如下: 例3 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height; drawR(int a,int b,int c,int d) { x=a; y=b; width=c; height=d; } public class drawRect extends Applet { drawR t; public void paint(Graphics g) {t=new drawR(35,35,50,100); g.setColor(Color.red); g.drawRect(t.x,t.y,t.width,t.height); 该例绘制出一个左上角坐标为(35,35),宽为50,高为100的矩形。运行效果 如图:

fillRect() 调用格式为:fillRect(int x,int y,int width,int height) 作用:以(x,y)为矩形的左上角顶点,绘制 一个宽、高分别为width和height有填充色 的实心矩形。 方法中的参数解释如下: x,y——所绘矩形左上角坐标。 Width,height——所绘矩形的宽和高。 与drawRect()的区别:所绘制的矩形中可有 填充色。

该方法的使用举例如下: 例4 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height; drawR(int a,int b,int c,int d) { x=a; y=b; width=c; height=d; } public class showdrawR extends Applet { drawR t; public void paint(Graphics g) {t=new drawR(35,35,50,100); g.setColor(Color.red); g.fillRect(t.x,t.y,t.width,t.height); 运行效果如下:

drawroundRect() 调用格式为:drawRoundRect(int x,int y,int width,int height,int arcW,int arcH) 作用:以(x,y)为矩形的左上角顶点,绘制 一个宽、高分别为width和height的圆角矩 形。 方法中的参数解释如下: x,y——所绘矩形左上角坐标。 Width,height——所绘矩形的宽和高。 arcW,arcH分别为所绘矩形圆角的宽和高。

例5 import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height,arw,arh; drawR(int a,int b,int c,int d,int w,int h) { x=a; y=b; width=c; height=d; arw=w; arh=h;} } public class showdrawR extends Applet { drawR t; public void paint(Graphics g) { t=new drawR(35,35,50,100,20,20); g.setColor(Color.red); g. drawRoundRect(t.x,t.y,t.width,t.height,t.arw,t.arh);} 该程序运行的效果如下:

fillRoundRect() 调用格式为: fillRoundRect(int x,int y,int width,int height,int arcW,int arcH) 方法作用:以(x,y)为矩形的左上角顶点,绘制一个 宽、高分别为width和height可有填充色的圆角矩形。 方法中的参数解释如下: x,y——所绘矩形左上角坐标。 Width,height——所绘矩形的宽和高。 arcW,arcH分别为所绘矩形圆角的宽和高。 与drawRoundRect()的区别:该方法所绘制的圆角矩 形中可有填充色。

例6 该程序运行的效果如下: import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; class drawR { protected int x,y,width,height,arw,arh; drawR(int a,int b,int c,int d,int w,int h) { x=a; y=b; width=c; height=d; arw=w; arh=h;} } public class showdrawR extends Applet { drawR t; public void paint(Graphics g) { t=new drawR(35,35,50,100,20,20); g.setColor(Color.red); g.fillRoundrect(t.x,t.y,t.width,t.height,t.arw,t.arh);} 该程序运行的效果如下:

Graphics类--绘制3D矩形 顾名思义,就是java语言所具有的三维矩形绘制 功能,它是利用draw3DRect()和fill3DRect()函 数来实现的。 Draw3DRect() 调用格式:draw3DRect(int x,int y,int width,int height,Boolean b) 功能:以左上角坐标为(x,y),用指定的宽width和 高height绘制一个三维矩形。当变量b的值为true时, 所绘矩形为凸起的;当变量b的值为false时,所绘矩形 为下凹的。 参数介绍如下: x,y——三维矩形的左上角坐标; width,height——三维矩形的宽和高。

例7 上例绘制出一个具有下凹三维效果的矩形。 import java.awt.*; import java.applet.*; public class Draw_rec extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.draw3DRect(10,150,100,100, false); } 上例绘制出一个具有下凹三维效果的矩形。

fill3DRect() 调用格式:fill3DRect(int x,int y,int width,int height,Boolean b) 功能:以左上角坐标为(x,y),用指定的宽 width和高height绘制一带有填充色的三维 矩形。当变量b的值为true时,所绘矩形为 凸起的;当变量b的值为false时,所绘矩形 为下凹的。 参数介绍如下: x,y——三维矩形的左上角坐标; width,height——三维矩形的宽和高。

上例绘制出一个具有凸起且内填充色为蓝色的三维矩形。 例8 import java.awt.*; import java.applet.*; public class Draw_rec extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.fill3DRect(10,150,100,100,false); g.fill3DRect(10,150,100,100,true); } 上例绘制出一个具有凸起且内填充色为蓝色的三维矩形。

Graphics类--绘制弧形 Graphics类绘制弧形的函数有两个:drawArc() 和fillArc(),前一个用于绘制无填充色的弧形, 后一个用于绘制有填充色的弧形。 drawArc() 调用格式: drawArc(int x,int y,int width,int height,int anglestart,int angleend) 作用:绘制一段圆弧。 方法中参数解释: x,y——该圆弧外接矩形的左上角坐标。 Width,height——该圆弧外接矩形的宽和高。 Anglestart,angleend——该圆弧的起始角和终止角, 单位为“度”。“0”(零)度角为x轴的正方向。正的 角度按逆时针方向旋转;负的角度按顺时针方向旋转。

例9 运行效果如下: import java.applet.*; import java.awt.*; public class Draw_arc extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.drawArc(0,40,100,100, 0,180); g.drawArc(300,40,30,100, 0,360); g.drawArc(200,100,50,50, 0,270); } 运行效果如下:

fillArc() 调用格式:fillArc(int x,int y,int width,int height,int anglestart,int angleend) 作用:绘制一段着色圆弧(扇形)。 参数解释: x,y——该圆弧外接矩形的左上角坐标。 Width,height——该圆弧外接矩形的宽和高。 Anglestart,angleend——该圆弧的起始角和 终止角,单位为“度”。“0”(零)度角为x 轴的正方向。正的角度按逆时针方向旋转;负的 角度按顺时针方向旋转。

例10 运行效果如下: import java.applet.*; import java.awt.*; public class Draw_arc extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.fillArc(0,40,100,100,0,180); g.fillArc(300,40,30,100,0,360); g.fillArc(200,100,50,50,0,270); } 运行效果如下:

Graphics类--绘制椭圆 graphics类绘制椭圆的函数有两个:drawOval() 和fillOval(),前一个用于绘制无填充色的椭圆, 后一个用于绘制有填充色的椭圆。 drawOval() 调用格式:drawOval(int x,int y,int width,int height) 作用:绘制一个椭圆。 参数解释: x,y——该椭圆的中心坐标。 Width,height——该椭圆的宽和高。

例11 运行效果如下: import java.applet.*; import java.awt.*; public class Draw_oval extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.drawOval(100,40,50,24); g.drawOval(50,50,30,100); g.drawOval(10,10,20,70); } 运行效果如下:

fillOval() 调用格式:fillOval(int x,int y,int width,int height) 作用:绘制一个实心着色椭圆。 参数解释: x,y——该椭圆的中心坐标。 Width,height——该椭圆的宽和高。

其中setcolor()用于指定椭圆着色的色值。 运行效果如下: 例12 import java.applet.*; import java.awt.*; public class Draw_oval extends Applet { public void paint(Graphics g) g.setColor(Color.red); g.fillOval(100,40,50,24); g.fillOval(50,50,30,100); g.fillOval(10,10,20,70); } 其中setcolor()用于指定椭圆着色的色值。 运行效果如下:

Graphics类--绘制多边形 graphics类绘制多边形的函数有两个: DrawPolygon ()和fillPolygon (),前一个 用于绘制无填充色的多边形,后一个用于 绘制有填充色的多边形。 drawPolygon() 调用格式:drawPolygon(int x[],int y[],n) 作用:绘制一个无填充色的多边形。 方法中参数解释: n——多边形的顶点个数加1。 X[],y[]——多边形中n个顶点的坐标值。

例13 运行效果如图: import java.applet.*; import java.awt.*; public class Draw_poly extends Applet { public void paint(Graphics g) { int x1[]={20,50,70,80, 80, 20}; //x1[0],x1[5]相 同 int y1[]={30,30,50,80,100, 30 }; //y1[0],y1[5]相同 g.setColor(Color.red); g.drawPolygon(x1,y1,6); //补充:165页 //g.drawLine(20,30,50,30); //g.drawLine(50,30,70,50); //g.drawLine(70,50,80,80); //g.drawLine(80,80,80,100); //g.drawLine(80,100,20,30); } 运行效果如图:

fillPolygon() 调用格式:fillPolygon(int x[],int y[],n) 作用:绘制一个有填充色的多边形。 方法中参数解释: n——多边形的顶点个数。 X[],y[]——多边形中n个顶点的坐标值。

例14 运行效果如图: import java.applet.*; import java.awt.*; public class Draw_poly extends Applet { public void paint(Graphics g) int x1[]={20,50,70,80,80,20}; int y1[]={30,30,50,80,100,30}; g.setColor(Color.red); g.fillPolygon(x1,y1,6); } 运行效果如图: