Java 实用程序设计西电版第9章 Java GUI程序设计.ppt
《Java 实用程序设计西电版第9章 Java GUI程序设计.ppt》由会员分享,可在线阅读,更多相关《Java 实用程序设计西电版第9章 Java GUI程序设计.ppt(146页珍藏版)》请在三一办公上搜索。
1、,第 9 章 Java GUI 程序设计,9.1 Java 2D图形处理9.2 Swing基础知识9.3 容器结构及常用容器9.4 布局管理9.5 事件的捕获与事件模型9.6 Swing组件概览9.7 SWT,9.1 Java 2D图形处理Java 2D API为程序员提供了一个二维图形框架,其功能非常强大,增强了抽象窗口工具包(AWT)的文字、文本和图形功能,程序员通过调用其中的API方法就能实现对图形的反转、缩放和旋转等。,1.Font类Font类表示Java程序中的字体,该类主要用来实现文本的可视效果。Font对象用来创建一种字体,使用Font类时,首先需要导入java.awt.Font
2、类。Font类的主要构造方法及其含义如表9-1所示。,其中,参数name指定字体的名称,style指定字体的样式,size指定字体的磅数。例如:Font font1=new Font(Font.SERIF,Font.BOLD,20);Font font2=new Font(font1);Font类给出的字体很少,程序员可使用系统支持的其他字体,如“宋体”、“黑体”等,可以使用它们创建Font对象。程序员可使用下述方法调用获取系统中可用的字体名称:GraphicsEnvironment local=GraphicsEnvironment.getLocalGraphicsEnvironment()
3、;String fonts=local.getAvailableFontFamilyNames();,2.Color类Color类用来封装标准RGB颜色空间中的颜色。按照标准RGB的要求,所有颜色都是由红、绿、蓝三原色按照不同比例构成的,每种原色使用一个int值(0255)表示。使用Color类时,首先需要导入java.awt.Color类。Color类的主要构造方法及其含义如表9-2所示。Color color1=new Color(100,100,100);Color color2=new Color(100,100,100,0);,3.Graphics2D类Graphics2D类继承于j
4、ava.awt.Graphics,是描绘2D图像的类。在使用Graphics2D类时,需要使用强制类型转换将Graphics类型转换为Graphics2D,如下所示:public void paint(Graphics g)Graphics2D graphics2d=(graphics2D)g;,4.BasicStroke类在描绘图形时,可以选择笔画的属性,比如改变线条的粗细,使用线条的样式等。BasicStroke类为图形的轮廓定义了一系列的显示属性。通常,可以用一个BasicStroke对象设置一个Graphics2D对象的Stroke属性,这一设置需要使用Graphics2D类中提供的s
5、etStroke()方法。使用Stroke时,首先需要导入java.awt.BasicStroke类。BasicStroke类的主要构造方法及其含义如表9-3所示。,图9-1 例9-1运行结果,5.Java2D基本图形java.awt.geom包中定义了一些基本几何图形,包括直线(Line2D)、矩形(Rectangle2D)、圆角矩形(RoundRectangle2D)、椭圆(Ellipse2D)等,也可以描绘文字。典型的基本图形的绘制如例9-2所示。,图9-2 例9-2运行结果,9.2 Swing基础知识Swing为程序员构建图形用户界面提供了一系列的组件,能够向Java应用程序加入丰富的
6、图形化功能和交互性。Swing组件完全由Java语言实现。通过Swing,程序员可以创建外观跨平台或兼容当前平台的图形用户界面。Swing是Java基础类库(Java Foundation Classes,JFC)的一部分。,1.Swing和AWTAWT的全称是抽象窗口工具集(Abstract Window Toolkit),其中包含用户界面相关的组件。它的类库包括创建Java图形界面程序的所有工具。用户可以利用AWT在容器中创建标签、按钮、复选框、文本框等用户界面元素。,总结Swing组件与AWT组件的区别如下:(1)Swing组件的实现不包含任何本地代码,其平台独立性可以使其不受硬件平台的
7、限制;(2)Swing组件比AWT组件拥有更多、更好的功能;(3)Swing库是AWT库的扩展,相比AWT提供的简单的工具,它提供了更多的特性和工具,可以用来实现更复杂的图形用户界面。,2.Java GUI APIJava GUI API所包含的类可以分为以下三种。(1)组件类(component class)。(2)容器类(container class)。(3)辅助类(helper class)。,9.3 容器结构及常用容器容器组件的主要作用是容纳其他组件,并按照一定的方式组织排列它们,单个组件是不能直接显示在用户界面的,需要将组件放置在容器中,同一个容器中的所有组件通常同时被显示或同时被
8、隐藏。,1.容器的结构容器分为顶层容器和面板,顶层容器用来包含其他非顶层容器和基本组件。,2.顶层容器1)JFrame窗体JFrame窗体是java.awt.Frame的子类,是Java图形应用程序的顶层容器,用来存放Swing组件,该容器不能包含在其他的容器之中。GUI的应用程序通常至少使用一个框架窗口。JFrame组件可以用于在Swing程序中创建窗体。,图9-3 例9-3运行结果,JFrame可以调用setDefaultCloseOperation(int operation)方法关闭窗体。Java提供了几种方式来关闭窗体,这几种方式在javax.swing.WindowConstant
9、s接口中定义,常用的有以下4种:DO_NOTHING_ON_CLOSE:窗体关闭时什么都不做。DISPOSE_ON_CLOSE:移除窗口的默认窗口关闭操作。HIDE_ON_CLOSE:隐藏窗口的默认关闭操作。EXIT_ON_CLOSE:退出应用程序默认窗口关闭操作。,2)JDialog窗体JDialog窗体是java.awt.Dialog的子类,是Swing组件中的对话框。JDialog窗体与JFrame类似,使用的时候也需要调用getContentPane()方法获取JDialog中的容器,然后在这个容器中添加组件或者设置布局管理器。,图9-4 例9-4运行结果,3.常用面板1)JPanel
10、面板JPanel是javax.swing.JComponent的子类,是一个轻量级容器。JPanel是一个面板容器,既可以加入到其他的容器中使用,也可以把其他组件(如JButton、JTextArea、JLable等)加入到JPanel中。,图9-5 例9-5运行结果,2)JScrollPane面板在设置界面时,可能会出现一个比较小的容器需要显示一个较大部分内容的情况,这时就可以使用JScrollPane面板。JScrollPane面板是带有滚动条的容器,可以很好地解决上面的问题,但是JScrollPane面板只能放置一个组件,所以如果想要放置多个组件,可以先将组件放置在JPanel容器上,再
11、将JPanel容器放置到JScrollPane面板上。,例9-6 JScrollPanelDemo.java:带有滚动条的JScrollPane面板。,图9-6 例9-6运行结果,3)其他面板JTabbedPane:可以同时包含多个组件,但是每次只能显示一个,用户可以在组件之间方便地切换。,9.4 布 局 管 理基本组件放置到顶级容器或者面板中,组件可能会充满整个框架并且相互重叠,从而无法正常使用。程序员为了能够设计出美观的界面,需要使用布局管理器来控制组件在容器中的相对位置。Java.awt包中定义了几种布局管理器类,每一种布局管理器类对应一种布局策略。,1.FlowLayout类FlowL
12、ayout为流式布局管理器,是最简单的布局管理器,也是JApplet和JPanel默认的布局管理器,它按照组件添加的顺序,从左到右依次排列组件。FlowLayout类的构造方法及其含义如表9-7所示。,图9-7 例9-7运行结果,2.BorderLayout类BorderLayout为边界布局管理器,是JFrame、JDialog的默认布局管理器,它将容器分为北、南、东、西和中间五个区域,可以将组件放置在这五个区域中,当框体大小改变时,南、北位置的组件可以水平方向拉伸,东、西位置的组件可以垂直方向拉伸,中间位置的组件水平和垂直方向都可以拉伸。BorderLayout类的构造方法及其含义如表9-
13、8所示。,图9-8 例9-8运行结果,3.GridLayout类GridLayout为网格布局管理器,该布局管理器能够按照矩阵的形式管理容器中的组件。GridLayout布局管理器按照添加的顺序依次从左到右、从上到下一行一行放置组件。,图9-9 例9-9运行结果,4.CardLayout类CardLayout为卡片布局管理器,它将组件像卡片一样放置在容器中,一次只显示一张卡片,一张卡片放置一个组件。卡片布局使得多个组件可以共享同一个显示空间,初始时显示该空间中第一个添加的组件,并通过CardLayout提供的方法来切换卡片显示其他组件。CardLayout类的常用方法及其含义如表9-10所示。
14、,图9-10 例9-10运行结果1,图9-11 例9-10运行结果2,5.使用null布局管理器一般容器都有默认的布局方式,但是有时候需要组件按照绝对位置和绝对大小放置,这时容器提供的默认布局方式会产生干扰。Java提供了对null布局的支持,使得程序员可以在固定的位置上放置组件,操作步骤如下:(1)首先使用setLayout(null)将容器的布局方式设置为null布局。(2)再调用组件的setBounds(int x,int y,int width,int height)方法设置组件在容器中的位置和大小,单位为像素(参数x、y为组件左边缘和上边缘距离窗体左边缘和上边缘的距离,width和h
15、eight为组件的宽和高)。,图9-12 例9-11运行结果,9.5 事件的捕获与事件模型Java应用程序在运行过程中,用户通过程序的用户界面进行某个操作时,比如单击了一个按钮,便会引发一个相应的动作,也称为事件。Java定义了很多事件类,分别描述不同的用户行为,程序员可以根据这些事件类实现自己相应的功能。,1.Java的事件机制Java的事件机制主要涉及以下三类对象。Event(事件):事件封装了事件源对象和与事件相关的信息(通常就是一次用户操作)。如果程序需要获得界面组件上所发生事件的相关信息,一般可以通过EventObject类中getSource()方法获得。Event Source(
16、事件源):事件发生的地方,通常就是各个组件,比如JButton等。Event Listener(事件监听器):注册在事件源上,用来监听事件源所发生的事件,并对各种事件做出相应的响应。,2.事件监听器1)匿名内部类监听器匿名内部类是没有名字的内部类,可以实现一步完成定义内部类和创建该类实例,匿名内部类使得程序变得整洁。,图9-13 例9-12运行结果,2)内部类监听器程序也可以使用内部类定义监听器类,只需要创建一个监听器类,可以将这个监听器类共享给多个组件,然后让监听处理器去检测事件源,即由哪个组件产生的事件,最后使用相应的事件处理方法处理。例9-13使用内部类编写一个监听器类,实现多个组件共享
17、同一个监听器。,例9-13 InnerListenerDemo.java:内部类监听器示例。,3)使用框架作为监听器类程序还可以使用一个框架作为事件监听器,通过将框架注册到需要监听的组件上,实现事件的监听和处理。例9-14的程序通过这种方式来实现事件监听。,3.监听器接口适配器前面章节介绍了如何在组件(事件源)上绑定监听器,使用组件提供的addxxxListener方法,需要实现xxxListener接口类中全部抽象方法,但是有时程序员并不想实现全部抽象方法,只是需要其中的几个。为了方便,Java为程序员提供了更为方便的监听器接口适配器类,如表9-11所示,它提供了监听器接口中全部方法的默认实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实用程序设计西电版第9章 GUI程序设计 实用程序 设计 西电版第 GUI 程序设计
链接地址:https://www.31ppt.com/p-6143142.html