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

java核心技术基础知识个人总结之——图形程序设计基础

2009-02-23 22:12 507 查看
一、swing概述:swing基于AWT架构之上,Swing是指被绘制的用户界、面类,AWT是指像事件处理这样的窗口工具箱的底层机制,Swing可以让用户随意的选择喜欢的感官。


二、框架:没有包含在其他窗口中的窗口被称为框架(frame),在AWT中有一个Frame类,是用来描述框架的,这个类在Swing版本中是JFrame(绝大数的Swing组件都有J开头),它
是极少数几个不绘制在画布上的Swing组件之一,它的修饰部件(如按钮,标题栏,图标等)由用户的窗口系统绘制,而不是由Swing绘制,Swing用来绘制框架里的内容。

JFrame.setVisible(true)方法可以让框架可见,JFrame.show()可以让框架可见并且置于其他窗口的前面。JFrame.setDefaultCloseOperation(int i)可以定义关闭这个框架时候的响应动作,让程序退出的常量是JFrame.EXIT_ON_CLOSE。(以上方法都不是静态方法!)在初始化完后,main方法退出,这个时候程序并没有终止,终止的只是主线程,事件调度线程保持程序处于激活状态,直到关闭框架或者调用System.exit。

改变框架:
1、Component类:setVisible(boolean bool)设置窗口是否显示;set||getSize(int w,int h||Dimension d)设置/获取大小; set||getLocation(int x,int y)设置获取位置,setBounds(int x,int y,int w,int h)设置位置和大小。

2、windows类:toBack()将窗口移动到桌面窗口栈的后面 ;toFront()将窗口移动到桌面的前面;setLocationByPlatfrom(boolean bool)由平台选择一个合适的位置显示窗口。
3、Frame类: isResizable(boolean bool)是否可以让用户改变大小;setTitle(String str)设置标题;setIconImage(Image img)设置框架的图标。
setUndecorate(boolean bool)框架显示中的标题栏以及关闭按钮这些是否显示;setExtendedState(int state)设置窗口的状态,如Frame.ICONIFIED可以让窗口最小化。

4、Toolkit类:getDefaultToolkit()返回一个默认的工具箱;Dimension getScreen()返回用户屏幕的尺寸; Image getImage(String filename)加载得到一个指定的图像对象。


三、绘制组件:绘制一个组件,需要定义一个扩展JComponent的类,并覆盖其中的paintComponent(Graphics g)方法,在JAVA中,所有的绘制都必须使用Craphics对象。只要窗口需要重新绘图时,事件处理器就会通告组件,从而执行所有组件的paintComponent方法。不用自己调用paintComponent方法,在应用程序需要重新绘图的时候,这个方法会自动的被调用,如果需要强制重新绘制组件,那么要调用的是repaint方法,他将引发采用相应配置的Graphics对象调用所有组件的paintComponent方法。
1、JFrame类:getContentPane()返回框架里的内容窗口;add(Component comp)将一个给定的组件添加到该框架的内容窗口中。
2、Component类:repaint()重新绘制组件。
3、JPanel类是一个可以包含其他组件的容器,但同样也可以在其上面进行绘制。


四、绘制2D图形:主要是用java.awt.Graphics2D类去绘制图形的。图形的类主要在java.awt.geom里。要掌握这些之间的关系。paintComponent方法可以自动获得一个Graphics对象,可以把他强制转型成Graphics2D对象。以下是java.awt.geom包里的类:

Point2D类:用于描述一个点的抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数位置去构造一个点。point类继承point2D类,并
且是用整型数去构造一个点。

Shape接口:图形类的接口(不包括Point2D类),RectangularShape类继承该接口。

RectangularShape抽象类:包含很多获取闭合矩形图像位置信息的方法:getCenterX() getCenterY() getMinX() getMinY() getMaxX() getMaxY()返回闭合矩形的中心,以及最小、最大X和Y坐标值。setFrame()几个重载的方法将此 Shape 的框架矩形设置为指定的 Rectangle2D。

Rectangle2D抽象类:继承RectangularShape抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数(左上角x坐标,左上角y坐标,长、宽)去构造一个矩形,也可以先用不带参数的构造器构造一个空的矩形,然后用方法setFrameFromDiagonal(point x,point y)参数表示对角的2个点去构造一个矩形,也可以是用setFrameFromDiagonal(px,py,qx,qy)参数表示对角点的X,Y坐标去构造一个矩形,该方法属于RectangularShape抽象类。Rectangle类继承Rectangle2D类,并且是用整型数去构造一个矩形。

Ellipse2D抽象类:继承RectangularShape抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数(左上角x坐标,左上角y坐标,长、宽)去构造一个椭圆,也可以先用不带参数的构造器构造一个空的椭圆,然后用方法setFrameFromCenter(point center,point x)参数表示一个中心点坐标,和一个角坐标去构造一椭圆,该方法属于RectangularShape抽象类,也可以用setFrame()去设置一个外围的闭合矩形,然后构造椭圆。

Line2D抽象类:继承Shape接口,用于描述一条直线的抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数位置去构造一条直线,4个参数,分别表示起始点的X,Y坐标和结束点的X,Y坐标,参数也可以是2个point2D的对象,分别表示起始点和结束点。point类继承point2D类,并且是用整型数去构造一个点。

注意:只有Point2D和Rectangle2D这两个类有实现类Point和Rectangle用来用整型数绘图。可以用drawPolygon(int[],int[],int)绘制多边形,详情可以查看API文档。


五、颜色:在每次绘制前都可以用Graphics2D的对象去调用setPaint,指定一种颜色去绘制图形,在后面的draw绘制图形时都是用指定的颜色,也可以用fill去用这种颜色填充图形。Color类里面有常量表示一些常用的颜色,也可以new Color(int r,int p,int g)构造一个颜色,SystemColor里面也有很多表示系统颜色的常量。

六、图像:可以用ImageIO类里的静态方法read去读取图像,参数可以是File对象也可以是URL对象。
Graphics类:绘制图像用drawImage(Image,int x,int y,ImageObserver observer)参数是:要绘制的对象,左上角的X坐标,左上角的Y坐标,绘制进程中以通告为目的的对象。

drawImage(Image,int x,int y,int width,int height,ImageObserver observer)多的两个参数表示图像的宽和高。

copyArea(int x,int y,int width,int height,int dx,int dy)从屏幕坐上角X坐标和Y坐标的位置开始拷贝屏幕的一块高为width宽为height的区域到另一块与他相隔水平距离为dx垂直距离为dy的区域。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: