您的位置:首页 > 编程语言 > Java开发

Java学习笔记6——图形编程

2012-10-01 08:58 239 查看
AWT(Abstract Window Tool,抽象窗口工具箱)是J***A中面向图形编程的基础,其中,AWT是J***A 1.0提出的,其后,SWING是在J***A1.2提出的新的界面库,但是SWING并不是说取代了AWT,在J***A1.1中,AWT事件处理模型有了根本改变。而SWING仍然使用的是Java1.1的事件处理模型。

AWT的分类为:基本组件及包容器(Container)

基本组件是最小的单位,里面不包含其它的成分。

包容器是一种特殊的组件,用来包含其它组件。

简单组件包括:

标签Label,有方法Label()、Label(String)、Label(String,int),其中,int表示对齐方式——Label.LEFT/Label.RIGHT/Label.CENTER

setText()、getText()

文本域TextField,有方法TextField()、TextField(int)、TextField(String)、TextField(String,int)、setText(String)、getText()、void setEchoChar()

按钮Button,有方法Button()、Button(String,Label)

复选框组件CheckBox,其方法有:Checkbox()、Checkbox(String,CheckboxGroup,boolean)、setLabel()、setState()

复选框组组件CheckboxGroup,其方法有:CheckboxGroup()

单选框组件

滚动条组件ScrollBar

多行文本组件TextArea,其方法有TextArea()、TextArea(int,int)、TextArea(String)、TextArea(String,int,int)、TextArea(String,int,int,int)、setRows(int)、setColumns(int)、setText(String)

下拉列表组件Choice,其方法有Choice()、add(String)、remove(int)、select(String)、insert(String,int)

列表组件List,其方法有List()、List(int)、List(int,boolean)、add(String)、select()、replaceItem(String,int)、remove(int)

画布组件Canvas,我认为这个是特殊的,MFC中在我印象中似乎没有,Win32中在我印象中似乎也没有这个东西,而且,在J***A中,它是图形操作的容器,却不能包含其它GUI组件,它只能为图形操作提供容器平台,进而在其上自由地进行图形操作。构造函数为Canvas(),其方法有print(Graphics)

面板组件Panel 面板组件本身是一个矩形区域,是一个最简单的容器,在里面可以各种组件。

在这里,还得澄清一些概念:

窗口和菜单——框架窗口组件Frame是可独立运行的主窗口,主要方法有:void setIconImage(Image)、void setMenuBar(MenuBar)、void setTitle(String)、void setResizable(boolean)、void pack()、void show()、addWindowListener()、void add(组件)、void add(组件,对齐方式)

对话框Dialog,与框架窗口一样,也是容器组件,可以在其上放置其它组件,对话框有模式对话框(Model Dialog)和非模式对话框(Modeless Dialog),这两个概念与MFC中一样。文件对话框FileDialog是主要用于打开与保存文件时让用户选择文件名,通常,文件对话框中,是操作系统提供的标准对话框。当然,这中间有就涉及到监听事件了,同时,Dialog有方法dispose()是做什么呢?Dialog必然还有方法show()

,文件对话框方法为:FileDialog(Frame实例,String, FileDialog.LOAD|)、setTitle(String)、setMode(FileDialog.S***E)

菜单Menu,它有方法:Menu(String)、addSeparator()、add(MenuItem)、MenuBar.add(Menu)、CheckboxMenuItem(String,boolean)

上述容器组件虽然在里面可以放许多组件,但是却无法明确其放置的位置,因此,JAVA中有了布局管理器,它可以确定组件放的位置与大小,每个容器组件有一个默认的布局管理器,也可以通过setLayout()方法来设置其它布局管理器,布局管理器有:FlowLayout、BoarderLayout、GridLayout、GridBagLayout、CardLayout、null

1、FlowLayout布局管理器

FlowLayout布局管理是一种最简单的布局管理方法,是Panel的默认布局

它以流式的方式,即组件按每行先后自左向右放置,一行放不下时再换行

FlowLayout的默认对齐方式为居中对齐

构造函数:

① FlowLayout():创建默认的FlowLayout布局管理器。

② FlowLayout(int):以指定的对齐方式创建FlowLayout布局管理器。其中的参数有FlowLayout.LEFT(左对齐)、FlowLayout.RIGHT(右对齐)、FlowLayout.CENTER(居中对齐)。

③ FlowLayout(int,int,int):以指定的对齐方式及间距创建FlowLayout布局管理器。其中第一个参数为对齐方式,第二个参数为组件间间距,第三个参数为列间距。

2、 BorderLayout布局管理器

BorderLayout是Frame和Dialog的默认布局

它将整个容器的区域分为东、西、南、北、中五个部分加入组件时,需指明放置的位置

构造函数

①BorderLayout():创建默认的BorderLayout。

② BorderLayout(int,int):以指定的行间距和列间距创建BorderLayout。

3、GridLayout

GridLayout布局将容器区域划分成m行*n列,大小相等的格子,而容器中的组件就放入这些格子中,占用大小完全相同的一格。

构造函数:

① GridLayout():创建默认的GridLayout布局,所有组件在一行中显示。

② GridLayout(int,int):按指定行数和列数创建GridLayout布局。

③ GridLayout(int,int,int,int):按指定行数、列数、行间距和列间距创建GridLayout布局。

4、GridBagLayout布局管理器

GridBagLayout布局将显示区域分成很多矩形小单元,每个组件可以占用一个或多个单元,从而可以指定每个组件所占空间的大小。

5、CardLayout

CardLayout将容器中的组件(通常是面板)像扑克牌一样排列,每次只能显示最上面的一张。

构造函数

① CardLayout():创建默认的CardLayout布局管理器。

② CardLayout(int,int):以指定的行间距和列间距创建CardLayout布局管理器。

主要方法:

void first() 显示第一个加入到CardLayout的组件

void last()显示最后一个加入到CardLayout的组件

void next()显示当前组件的下一个组件,如当前是最后一个,则下一个为第一个

void previous()显示当前组件的前一个组件,如当前是第一个,则下一个为最后一个

6、null

null布局管理器将主动权交给用户,由用户使用坐标系统来放置每个组件,即调用组件的setBounds()方法来设置其放置位置和大小。

也就是说,所有的组件有setBounds()方法来设置其放置位置与大小

Java语言的类库中提供了丰富的绘图方法,其中大部分对图形、文本、图像的操作方法都定义在Graphics类中

在头部先写上:import java.awt. Graphics。

paint( )方法中有一个Graphics对象参数,因此,我们只要在这个对象上进行图形、文本及图像的绘制操作,就可以在屏幕上看到所显示的结果。

1、图形坐标

Java图形系统采用的二维

Java的坐标原点(0,0)在屏幕的左上角,水平向右为X轴的正方向,竖直向下为Y轴的正方向

每个坐标点的值表示屏幕上的一个像素点的位置,因此,所有坐标点的值都取整数。——这个与MFC中绘图是一样的。

2、颜色Color

构造函数:

Color(int r, int g, int b): 其中每个参数的值都在0到255之间,数值越大就表明这种颜色的成份越重。例如(0,0,0)代表黑色,(255,0,0)代表红色。

主要方法:

setColor(Color c)调用Graphics类中的setColor( )方法设置系统当前所用颜色

3、文本与字体Font

创建:

Font(String name, int style, int size):创建指定三个参数字体名、字体风格和尺寸大小的字体。

其中字体风格有如下三种:Font.BOLD(粗体)、Font.ITALIC(斜体)、Font.PLAIN(普通体)。也可以进行相加来生成复合字体风格,例如想让style既是粗体又是斜体:

Font fn = new Font("TimesRoman", Font.BOLD+Font.ITALIC, 28)

方法:

setFont(Font f)

4、Java中图形的绘制

①画线

在Java的Graphics类中提供画线功能的是drawLine( )方法,其调用格式如下:

drawLine(int x1,int y1,int x2,int y2)

该方法需要设置四个参数,其中x1,y1表示线段的一个坐标点,x2,y2表示线段的另一个坐标点。

②2.矩形的绘制

Graphics类中提供了三种类型的矩形,它们分别是普通矩形、圆角矩形和立体矩形。而每一种矩形都提供两种不同风格的方法,一种是仅画出矩形的边框;另一种是不仅画出边框,并且还用相同的颜色将整个矩形区域填满。

(1)普通矩形 画普通矩形需调用drawRect( )或fillRect( )方法,它们的调用格式如下:

drawRect(int x, int y, int width, int height) //边框型风格

fillRect(int x, int y, int width, int height) //填充型风格

其中头两个参数分别表示矩形左上角的x坐标和y坐标,后两个参数分别表示矩形的宽度和高度。

(2)立体矩形 立体矩形也可以说是三维矩形。其实仅仅是在矩形的边框上增加一点阴影,使矩形看上去相对表平面好像有凸出或凹下的效果,其调用方法的格式如下:

draw3DRect(int x, int y, int width, int height, boolean raised)

fill3DRect(int x, int y, int width, int height, boolean raised)

这两个方法中的前四个参数与drawRect( )方法中所用的参数含义是一样的,第五个参数raised便是定义该立体矩形是具有凸出(值为true)还是凹下(值为false)的效果。

(3)圆角矩形 也就是矩形的四个顶角呈圆弧状,每个圆弧其实是由四分之一的椭圆弧所构成。画圆角矩形的两个方法的调用格式如下:

drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

我们可以看出,它们除了具有和普通矩形含义相同的前四个参数外,还多了两个用来描述圆角性质的参数。其中arcWidth代表了圆角弧的横向直径;arcHeight代表了圆角弧的纵向直径。

③椭圆的绘制

在Java中绘制椭圆的方法是给出该椭圆的外接矩形作为参数,其调用格式与画普通矩形的方法相似:

drawOval(int x, int y, int width, int height) //边框型风格

fillOval(int x, int y, int width, int height) //填充型风格

这里x和y不是椭圆的圆心坐标,而是该椭圆外接矩形的左上角。

4.画弧

弧是椭圆的一部分,因而画弧的方法就相当于先画一个椭圆,而后取该椭圆中所需要的一部分。它们的调用格式如下:

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) //填充型风格

其中前四个参数的含义与画椭圆一样,因此也必须用矩形的观点来确定弧在坐标系统中的位置。后两个参数就是用来定义椭圆的一部分:startAngle参数表示该弧从什么角度开始,arcAngle参数表示从startAngle开始转了多少度。

多边形的绘制

void drawPolygon(Polygon p)

参数是多边形对象Polygon ,先定义Polygon对象,然后将点加入到该对象中,然后利用drawPolygon进行多边形的绘制:

Polygon p = new Polygon;

p.addPoint(x1, y1);

p.addPoint(x2, y2);

...

g.drawPolygon(p);

复制与清除图形

copyArea(int x, int y, int width, int height, int dx, int dy)

g.clearRect(0, 0, size( ).width, size( ).height);

早期版本的 AWT 提供了简单的绘制包,对于复杂的图形、文本或图像,其功能却不够全面。Java 2D增强了抽象窗口工具包 (AWT) 的图形、文本和图像功能,可以开发更为强大的用户接口和新型的 Java 应用程序

Java 2D API 类分为以下几个包:

1)java.awt:java.awt包含了一些新增的2D API 类别和接口。

2)java.awt.geom:包含可以勾勒任何形状的 GeneralPath类别。

3)java.awt.font:包含用于文本布局和字体定义的类和接口。

4)java.awt.color:包含用于颜色空间定义和颜色监视的类和接口。

5)java.awt.image和 java.awt.image.renderable:包含用于图像定义和绘制的类和接口。

6)java.awt.print:包含用于打印所有基于 Java 2D 的文本、图形和图像的类和接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: