




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第22章 图形编程基础,在前面所有的学习过程中,一直都是在DOS屏幕下输入命令,再运行命令。但是程序员不可能将这种模式直接交给客户,因为程序员不可能将自己编写的程序代码交给客户。现实生活中,程序员会将自己编写的代码隐藏在一些图形界面后面,用户能看到的就是这些界面,和在这些界面中的一些控件。本章将详细讲述如何进行图形编程工作,然后每介绍一个控件,同时会结合实例演示如何创建或者添加这些控件。,22.1 图形编程的概念,Sun公司提供了一个用于基本GUI编程的类库,称其为抽象窗口工具箱(Abstract Window ToolkitAwt),Awt是用来创建用户界面的。本节将详细地介绍使用Awt来创建软件的图形界面。,22.1.1通过实例认识图形编程,在Java程序的图形设计中,有一个最外层的窗口,又称顶层窗口。这个窗口是整个图形的最外一层。在程序语言中,被称为框架。在Java程序语言中,框架是最高层的。在Awt类库中,有一个与之相对应的类叫做Frame类。框架是一个容器,所有的按钮、文本框等组建都被包含这个容器中。下面就先看一个简单的实例,来看看如何创建一个框架。(具体内容请参照本书),22.1.2 组件类,在Java.awt包中,有一个Component类,即组件类,它是Java中所有图形界面的组件的抽象类。可以从这个Component类中派生一个子类Container(容器)类,它可以容纳其他组件的组件。从这个类中也派生了一个子类Windows类。一个窗口对象是一个顶级窗口,它没有边框和菜单,如果想编写一个框架窗口,从它派生出一个子类Frame类,用来建立框架的窗口,而Frame是一个有标题和边界的顶级窗口。(具体内容请参照本书),22.1.3 布局管理器,布局管理器为容器内的组件提供了若干布局策略,每个容器都拥有某种布局管理器,用于负责其内部组件的排列。布局管理器类实现了java.awt.LayoutManager接口,java.awt类库中总共定义了五种布局管理器。下面将介绍常用的三种布局管理器。 1 通过实例熟悉BorderLayout布局管理器类的用法 2 通过实例来熟悉FlowLayout布局管理器类的用法 3 通过实例来熟悉GridLayout布局管理器类的用法,22.1.4 按钮组件的设计,按钮组件用来对应用户的单击动作,当用户单击按钮时,系统会执行相应动作。对于按钮组件Button,有以下常用的方法和构造方法。(具体内容请参照本书),22.1.5 标签组件的设计,标签组件的用处是用来标识,例如可以标识某个组件。下面先介绍标签的构造器和常用方法。 Label的构造器: Label的常用方法: (具体内容请参照本书),22.1.6 单行文本框组件的设计,大部分人都在银行的ATM取款机器上取过钱,当插入卡后,系统会让输入密码,其实这个密码框就是单行文本框。下面来看看单行文本框的构造器和常用方法。 TextField的构造器: TextField的常用方法: (具体内容请参照本书),22.1.7 多行文本框的设计,多行文本框同单行文本框一样,用于显示字符串,也可以对字符串进行编辑。既然是多行文本框,就说明是多个单行文本框组合而成的,可以输入多行文本。下面学习多行文本框的构造器和常用方法。 (具体内容请参照本书),22.1.8 列表框组件的设计,列表框组件以目录的形式显示字符串,并且允许用户从中选取一项或多项,每一项被称为元素,又被称为列表项(item)。下面学习列表框的构造器和常用方法。 列表框构造器: 列表框的常用方法: (具体内容请参照本书),22.1.9 下拉列表框组件的设计,下列列表框会让被选择的项目显示出来,其他的则不显示,它的构造器、常用方法和列表框是一样的。下面是一个有关下拉列表框的实例。(具体内容请参照本书),22.1.10 复选框组件,复选框组件提供了选择,被选中的状态为true,未被选中的状态就是false,默认状态是false。复选框中有两种,一种是复选框,一种是复选框组。前者是只能选择一项,而后者可以选择多项。先看看复选框的构造器和常用方法。 复选框的构造器如下所示。 复选框的常用方法如下所示。 (具体内容请参照本书),22.1.11 普通对话框,对话框继承自Windows类,外观与Frame有点相似,但是在对话框右上角,仅有一个关闭的按钮,没有最小化按钮和最大化按钮。对话框主要用于显示比较简单的询问,只需要用户回答“是”和“否”等类似的问题。对话框需要指定所有者,这样其会随着所有者的状态改变而改变。(具体内容请参照本书),22.1.12 文件对话框,什么是文件对话框呢?读者一定很熟悉打开菜单和保存菜单,当运行它们的时候,会弹出一个对话框,那个对话框就是文件对话框。文件对话框又被分成为打开对话框和保存对话框。下面先介绍它的构造器和常用方法,然后将结合实例进行演示。 文件对话框的构造器如下所示。 文件对话框的常用方法如下所示。 (具体内容请参照本书),22.1.12 菜单组件的设计,菜单这个组件,读者一定不会陌生。只要是学过电脑的人,天天都在跟菜单打交道。要想在一个框架中创建一个菜单,首先必须要学习3个类:一个是MenuBar类,一个是Menu类,一个是MenuItem类。这3个类是什么意思呢?(具体内容请参照本书),22.2 2D图形程序设计,在Java语言中,对于2D图形设计给了很大的支持,主要有两个类与之相关,一个是Graphics类,一个是Graphics2D类。尤其是Graphics2D类,它拥有一组非常精巧的API。由于此节不属于本书介绍的主要内容,所以在下面的小节中只是对其作了很简单的介绍,有兴趣的读者可以自行查阅相关的工具书。,22.2.1 如何使用Graphics类作图,组件的paint方法是一个组件绘制自身的时候调用,当组件有必要重新绘制自身时,此方法会自动被调用。有一个例子使用的很多,就是当一个组件的一部分被遮挡了,需要重新显示出来时,paint会被调用。先来看看这个方法是如何定义的: Public void paint(Graphics g) (具体内容请参照本书),22.2.2 点的设计,点的设计主要是通过point2D来实现的,在数学中,平面上的一个点通常是以点的位置决定,所以在这里使用下列方式定义一个点。 Point2D.Float p=new Point2D.Float(float x,float y); 点的设计是绘图中最基础的,只有掌握了如何绘制它,才可以更好的掌握后面其他的图形。,22.2.3 直线设计,在数学中,通过两点确定一条直线,那么两个点就可以建立一条直线。使用下列方法绘制一条直线。 Line2D.Double line=new Line2D.Double(x1,x2,x3,x4); 其实无论是点或直线,再或者是后面说到的各种图形,关键就是要知道如何手工绘制它们,而电脑绘图是按照人的意图来绘制的。,22.2.4 矩形设计,在矩形的设计中,有一个要注意的地方,就是要确定一个矩形,首先要有左上角的坐标,还要有高度和宽度,那么可以这样设计一个矩形。 Rectangle2D rec=new Rectangle2D.Double(px,py,qx-px,qy-py),22.2.5 椭圆设计,那椭圆形的设计,要确定以下因素:左上角的坐标、宽度和高度。其实也可以使用另一个角度来创建一个椭圆形,一个椭圆形只有一个外接矩形,所以只要设计好这个外接矩形,就可以绘制这个椭圆形。通过以下的方法就可以设计一个椭圆形。 Ellipse2D e=new Ellipse2D.Double(px,py,qx-px,qy-py);,22.3 色彩与字体,在平时编写程序时,可能会遇到与颜色、色彩相关的问题,那么如何解决它呢?这里将简单的讲述一下,由于本书侧重点和篇幅的问题,所以在这里不针对绘图程序进行举例。希望感兴趣的读者可以翻阅相关的资料自己练习。,22.3.1 如何使用面板配色,在Java程序语言中,可以通过java.awt包中的color类来实现色彩的配置,可以使用不同的方法,形成不同的颜色。在Color类中总共有13种静态常量,可以使用单独的颜色,例如:Color.blue或者Color.BLUE两种方式都可以,其效果都是一模一样的,也可以使用配色的形式,例如:Color backgoundcolor=new Color(r,g,b),分别设置三种颜色,进行混合成一种颜色。(具体内容请参照本书),22.3.2 如何调节字体,对于字体来说,程序中的默认字体是显示字符串。其实在Java程序中也可以设置字体,例如使字体加粗、变斜体、改变字体的大小等等。为了能调节字体,可以引入java.awt.GraphicsEnvironment这个包,可以通过getLocalGraphicsEnvironment这个静态方法得到GraphicsEnvironment的对象,然后再调用与字体相关的方法getAvailableFontFamilyName来调节字体。,22.3.3 如何绘制图形,需要编写扩展JPanel类的新类,至于JPanel类后面会重点讲述,它是容器类。在Jpanel类或子类中覆盖父类的paintComponent方法(具体内容请参照本书),21.3.4 paintComponent方法的简单介绍,paintComponent方法包含一个Graphics类型的参数,Graphics对象记录针对绘制图形和文本的一系列设置,比如设置的图标或当前颜色、字体等。PaintComponent方法位于Jcomponent类中,此类是所有非窗口Swing类中的组件的父类。,22.3.5 使用Java2D API来绘制和填充图形,前面的绘图方法属于基本的绘图方法,不能绘制复杂的图形,例如:不能使用实数坐标,不能绘制虚线或宽度不一的线条,不能使用纹理填充图形等等,Java2D API是为了解决这些问题产生的。 基本绘图方法: Java2D的绘图方法如下所示。 (具体内容请参照本书),22.3.6 如何使用Font类设置字体样式,可以设置生动的字体样式,可以通过使用setfont方法设置Graphics对象的字样,Font类只有一个构造函数: public Font(String name, int style, int pointsize) (具体内容请参照本书),22.3.7 如何使用FontMetrics 类设置字体的属性值,通过使用getFontMetrics方法,而不是new运算符(因为它是一个抽象类),可以创建该类的对象。这个对象包含与字体相关的大量信息,包括字符的高度、按像素数计算的字符串宽度等。这样,可以将字符串显示在特定的位置中,常用方法如下。 int stringWidth(String s):返回字符串宽度 int charWidth(char c):返回字符c的宽度 int getHeight():返回字体的高度 (具体内容请参照本书),22.3.8 如何使用Color类设置颜色,Color类用来设置颜色。如果要修改或设置组件的颜色,可以使用下列几种方法: void setColor(Color newColor):设置当前绘制的颜色 void setForeground(Color):设置前景色 void setBackground(Color):设置背景色 (具体内容请参照本书),22.3.9 使用线条绘制图形,下面是一些绘制图形的方法:(具体内容请参照本书),22.3.10 绘图模式的介绍,XOR模式的优点是,无论用什么颜色绘制对象,始终能够保证新对象可见。语法如下所示。 void setXORMode(Color xorColor) (具体内容请参照本书),22.3.11 使用Toolkit对象获取图像文件,要获得Toolkit对象,可以使用Toolkit类的静态getDefaultToolkit方法。 Toolkit getDefaultToolkit() :返回缺省工具包。 Image getImage(String filename) :返回一个将从文件中读取其像素数据的图像。参数filename 包含图像文件(例如,GIF 或 JPEG 文件) boolean drawImage(Image img, int x, int y, ImageObserver ob) : 绘制比例图像。 (具体内容请参照本书),22.4 事件模型与事件处理,在前面讲述了如何去创建一个框架、一个按钮、一个列表框和一个菜单。创建它们的目的是要使用它们,例如单击按钮,于是按钮开始执行任务。选择列表框中的其中一项,于是开始执行它的任务。这样就需要设计一个与组件相联系的动作。一个图形界面再好看,没有任何功能,那这个图形界面就像是一幅图画一样,起不了任何的作用。下面就详细的讲述,如何设计针对图形界面组件触发时的动作。,22.4.1 事件处理基础,在这里先看两个概念,一个是事件源,一个是事件。那什么是事件?什么又是事件源?所谓的事件就是指用户对组件发生的动作,例如,在平时大家要登录到Windows系统时,首先要输入密码和用户名。此时需要单击确定按钮才能进入,这个单击的动作就是事件。所谓的事件源就是触发动作的组件,例如刚才例子中的“确定”按钮就是事件源。(具体内容请参照本书),22.4.2 通过实例熟悉动作事件类的用法,动作事件类主要针对组件,何谓动作事件呢?例如单击按钮、选择菜单、在文本框中输入字符串并且按“Enter”键,这些都属于动作事件,动作事件类常用的方法如下。 public String getActionCommand() (具体内容请参照本书),22.4.3 通过实例熟悉窗口事件类的用法,窗口事件是在窗口对象上发生的事件,它在用户打开、关闭、最小化、最大化窗口时发生,处理窗口的事件接口是WindowListener接口,下面是窗口事件类的常用方法。 Public Window getWindow() 返回生产事件的窗口。 (具体内容请参照本书),22.4.4 通过实例熟悉文本事件类的用法,文本事件就是文本的字符串发生改变时产生的事件。动作事件是当向文本中输入字符后,敲击“En
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学六年级第一学期家长交流计划
- 信息化2.0教师终身学习促进计划
- 不安腿综合征护理课件
- 肾上腺肿瘤的护理查房
- 数学课堂线上教学反馈计划
- 大型活动安全教育计划
- 农业种植技术服务及农资供应协议
- 电力项目材料设备进场及采购计划他
- 部编本人教版2024-2025年小学一年级语文上册作业布置教学计划
- 开学第一天的感受作文11篇范文
- 住院医师规范化培训教学活动指南(2021年版)六项指南全面解读合集
- 2023修正版《电力设施保护条例》
- 经皮冠状动脉介入治疗术术后健康饮食宣教
- 三体系内审检查表全条款
- 共生筑就康德莱30年发展
- 《健康饮食与健康》课件
- 工程项目移交交接单
- 空调安装报价表
- 酒店住宿水单模板2020
- 公司财务审计报告怎么做 自来水公司财务审计报告
- 2021海康威视新员工入职培训考试
评论
0/150
提交评论