《第6章Java图形用户界面.ppt》由会员分享,可在线阅读,更多相关《第6章Java图形用户界面.ppt(46页珍藏版)》请在三一文库上搜索。
1、第6章 Java图形用户界面,6.1 图形用户界面概述和java.awt包简介 6.2 字体和颜色的设置、图形绘制和图像显示 6.3 Graphics2D画图简介,6.1 图形用户界面概述和java.awt包简介,图形用户界面GUI(Graphics User Interface),就是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种界面元素。 在Java里有两个包为GUI设计提供了丰富的功能:awt(abstract windows toolkit)包和swing包。 awt是java GUI的早期版本,组件种类有限,只提供基本的GUI设计类。 swing包是SUN公
2、司对早期版本的改进版本,它提供了更加丰富的组件和功能。 swing会用到awt中许多知识,学习awt包是学习GUI编程的基础。,java.awt包中的一些常用类,GUI组件分类,在AWT的概念中,窗口系统中所显示的各种对象都统称为“GUI组件”(Component)。组件有基本组件和容器组件之分。 基本组件是不能包含其它组件的组件,是构成图形用户界面的基本元素。 容器组件是用来包含其他组件的,故称之为容器(container)。用户可以把各种组件放入到容器中,也可以把容器放到另一个容器中,从而形成具有层次的组件结构。,组件类 (Component),容器类 (Container),基本组件类,
3、面板类panel,窗体类windows,Applet 小程序类,Frame 框架类,Dialog 对话框类,无边框,有边框,6.2 字体和颜色的设置、图形绘制和图像显示,6.2.1 设置字体,一、创建Font类的对象,Font(String name,int style,int size),使用java.awt包中的Font类的构造函数创建字体类的对象。,例: Font font1=new Font(“楷体_GB2312”,Font.BOLD+Font.ITALIC,50);,二、设置字体,public void setFont(Font font) -设置字体 public Font get
4、Font() -返回当前字体对象,字体的创建和设置应在显示前进行,否则以系统默认字体显示。,例1:编写一个简单的设置字体的程序,将字体设置为宋体、黑体,大小为30个像素,并在小程序窗口输出。,/TestFont.java import java.applet.Applet; import java.awt.Graphics; import java.awt.Font; public class TestFont extends Applet public void paint(Graphics g) Font font1=new Font(“宋体“,Font.BOLD,30); g.setFo
5、nt(font1); String s=“中国北京“; g.drawString(s,10,30); ,Graphics.drawstring(String str,int x,int y),其中的坐标x和y指的是整个文本块显示时左下角的位置。,/page1.html Java 小程序 ,运行后结果如下:,思考:,运行后结果如下:,6.2.2 设置颜色,利用java.awt包中的Color类可以创建颜色类的对象。,一、创建color对象,public Color(int r,int g,int b) public Color(int r,int g,int b,int a),第一种是用r,g,
6、b值创建一种不透明的颜色。第二种是用r,g,b值创建一种透明的颜色,a表示透明度。参数取值为0255。,public Color(float r,float g,float b) public Color(float r,float g,float b,float a),第一种是用r,g,b值创建一种不透明的颜色。第二种是用r,g,b值创建一种透明的颜色,a表示透明度。参数取值为0.0f1.0f。,二、Color类的颜色常量,Color类共有13种颜色常量,使用的时候可以查询API文档。,如:Color.RED表示红色,三、设置颜色,public void setColor(Color c)
7、-设置颜色 public Color getColor() 返回当前颜色对象 public int getRed() 得到当前颜色对象的red值 public int getGreen() 得到颜色对象的green值 public int getBlue() 得到颜色对象的blue值 public int getAlpha()-得到颜色对象的alpha值。,例2. 编写一个颜色设置的程序。,/TestColor.java import java.applet.Applet; import java.awt.*; public class TestColor extends Applet pub
8、lic void init() setBackground(Color.black); public void paint(Graphics g) Color c1=new Color(255,0,0); Color c2=new Color(255,0,0,128); Color c3=Color.pink;,Font font1=new Font(“宋体“,Font.BOLD+Font.ITALIC,15); String s=“中国北京“; g.setColor(c1); g.setFont(font1); g.drawString(“红色“+s,10,20); g.setColor(c
9、2); g.drawString(“红色“+s,10,40); g.setColor(c3); g.drawString(“粉色“+s,10,60); ,/page2.html Java 小程序 ,运行后结果如下:,6.2.3 字符数组和字节数组的显示,以下三个方法是Graphics类(该类在java.awt包中)的方法。,1. 绘制字符串,public void drawString(String str, int x, int y),坐标点(x,y)与要绘制的字符串Str左下角对应。,2.绘制字符数组,public void drawChars(Char chars ,int offset
10、,int number,int x,int y),参数offset是数组的起始下标,参数number是要绘制的元素个数,坐标点(x,y)含义同上。,3.绘制字节数组,public void drawBytes(Char bytes ,int offset,int number,int x,int y),含义同字符数组。,例:编写程序,显示字符数组和字节数组 。,/ DrawCharByte.java import java.applet.*; import java.awt.*; public class DrawCharByte extends Applet public void init
11、() setBackground(Color.black); public void paint(Graphics g) String s=“中国北京“; g.setColor(Color.red); g.drawString(s,20,40);,char ch=new charA,B,C,D,E; g.setColor(Color.white); g.drawChars(ch,0,5,80,40); byte byt=new byte65,66,67,68,69; g.setColor(Color.yellow); g.drawBytes(byt,0,3,82,42); ,/page3.ja
12、va Java 小程序 ,运行后结果如下:,6.2.4 java的图形绘制,预备知识:,Java图形界面窗口的坐标原点(0,0)在窗口左上角,水平 向右为x的正方向,垂直向下为y的正方向,坐标值单位是像素。,小程序窗口的坐标系同上,通过getSize()方法可得到小程序窗口界面的宽和高。,小程序窗口宽w:int w=getSize().width; 小程序窗口高h:int h=getSize().height;,1.画直线,public void drawLine(int x1,int y1,int x2,int y2);,功能:在点(x1,y1)和(x2,y2)之间画直线。,2.画矩形,(1
13、)画矩形,public void drawRect(int x,int y,int width,int height);,功能:以给定坐标(x,y)为左上角坐标,画宽度为width,高度为height的矩形,(2)用当前设置的颜色画填充矩形,public void fillRect(int x,int y,int width,int height);,(3)画圆角矩形,public void drawRoundRect(int x, int y,int width,int height,int arcWidth,int arcHeight),public void fillRoundRect(
14、int x, int y,int width,int height,int arcWidth,int arcHeight),前4个参数的意义同上,第5,6个参数arcWidth和arcHeight分别为水平方向圆弧总宽度、垂直方向圆弧总宽度。,注:若圆弧的宽度和高度分别等于矩形的宽度和高度,则绘制的是椭圆。,(4).画3D矩形,public void draw3DRect(int x,int y,int width,int height,boolean bool);,public void fill3DRect(int x,int y,int width,int height,boolean
15、bool);,功能:绘制一个有立体感的矩形,当bool为true时,矩形为突出的;当bool为false时,矩形为凹陷的。,3.画椭圆和圆弧,(1)画椭圆,public void drawOval(int x,int y,int width,int height); public void fillOval(int x,int y,int width,int height);,功能:x,y是椭圆外切矩形左上角的坐标;参数width和height是椭圆外切矩形的宽和高。上面的两个方法分别画椭圆和画填充的椭圆,(2)画圆弧,public void drawArc(int x,int y,int w
16、idth,int height,int startAngle,int arcAngle); public void fillArc(int x,int y,int width,int height,int startAngle,int arcAngle);,功能:前4个参数同画椭圆的参数;后两个参数含义startAngle是弧的起始角度,arcAngle表示从起始角度算起转多少度。逆时针为正,顺时针为负,他们的单位都是度,取值为0到360度之间,若超过则取360的余数。,例4. 编写程序演示画填充的椭圆和填充的扇形。,/ DrawOval.java import java.applet.*;
17、import java.awt.*; public class DrawOval extends Applet public void paint(Graphics g) g.setColor(Color.BLUE); g.drawRect(20,20,100,60); g.setColor(Color.RED); g.fillOval(20,20,100,60); g.setColor(Color.BLACK); g.drawOval(140,20,100,60); g.fillArc(140,20,100,60,0,60); ,/page4.html Java 小程序 ,运行后结果如下:,
18、6.2.5 图像的显示,一、声明和获取一个图像类的对象,1.定义一个图像类的对象,Image pic;,2. 获取一个图像的对象,这里只介绍小程序中获取图像的方法。,public Image getImage(URL url,String name);,该方法是java.applet.Applet类提供的方法,用于从文件加载图像到内存,以便显示图像。,name:图像名称, 格式可以是gif、jpg和png等。,URL:图像存放目录。,URL,getDocumentBase() -图像存放在HTML文档目录下或其子目录下时, 使用该方法指明图像路径。,getCodeBase() -图像存放在程序
19、代码所在目录下或其子目录下时, 使用该方法指明图像路径。,3. 得到指定图像的高度及宽度,int getHeight(ImageObserver observer) int getWidth(ImageObserver observer),参数observer是加载图像时的图像观察器,一般是在本类显示,其值为this。,如 Image pic=getImage(getCodeBase(),”a.jpg”); int w,h; w=pic.getWidth(this); h=pic.getHeight(this);,二、显示图像的方法,1、以图像本身的大小显示图像,public boolean
20、drawImage(Image img,int x,int y,ImageObserver observer),说明:参数x,y是被显示的图像在窗口左上角的图标。,2、放大或缩小显示图像,public boolean drawImage(Image img,int x,int y,int width,int height,ImageObserver observer),说明:这里的width和height表示图像在窗口显示的尺寸。,例5.编写程序,演示按原图大小显示图像,缩小为原图一半显示图像。,import java.applet.*; import java.awt.*; public c
21、lass ShowImage extends Applet public void paint(Graphics g) Image pic=getImage(getCodeBase(),“计算.gif“); int w=pic.getWidth(this); int h=pic.getHeight(this); int d=5; g.drawImage(pic,0,0,this);/原图大小显示 g.drawImage(pic,w+d,0,w/2,h/2,this);/缩小为原图宽高一半并显示 ,/page5.html Java 小程序 ,运行后结果如下:,6.3 Graphics2D画图简介
22、,Java类库中的java.awt包中还提供了另外一个类Graphics2D供画图显示使用,它是Graphics类的子类。,与Graphics的区别:,Graphic2D有更强大的图形处理功能,它把要绘制的图形当作对象来处理,通过方法draw()和fill()绘制和填充图形。,方法的参数都是图形对象,如直线(Line2D)、矩形(Rectangle2D)和椭圆(Ellipse2D)等。,上述的创建图形对象的类都存在于java.awt.geom中,因此若要使用Graphics2D画图,需在程序前面引入java.awt.geom包中相应的类。,通常用paint(Graphics g)绘图时,要通过
23、以下语句把父类对象强制转换为其子类Graphics2D的对象g2d进行画图显示。 Graphics2D g2d=(Graphics2D)g;,例6 用Graphics2D画一条直线。,import java.applet.*; import java.awt.*; import java.awt.geom.*; public class TestGraphics2D extends Applet public void paint(Graphics g) Graphics2D g2d=(Graphics2D)g; BasicStroke bstroke=new BasicStroke(3.0f); g2d.setStroke(bstroke); Line2D line=new Line2D.Double(20.0,20.0,32.0,20.0); g2d.draw(line); ,调用类Line2D的构造函数,参数为Double型。见API的java.awt.geom包。,/page6.html Java 小程序 ,运行后结果如下:,
链接地址:https://www.31doc.com/p-3431502.html