《Java语言程序设计 第2版 教学课件 ppt 作者 赵国玲 ch6》由会员分享,可在线阅读,更多相关《Java语言程序设计 第2版 教学课件 ppt 作者 赵国玲 ch6(42页珍藏版)》请在金锄头文库上搜索。
1、第6章Java图形用户界面设计,本章主要内容,6.1 Java图形用户界面概述 6.2 Java布局管理 6.3 Java事件处理 6.4 常用Swing组件的使用 6.5图形界面中的用户自定义成分 6.6 创建和使用菜单 6.7应用案例,学习目标,了解 Java 图形用户界面编程基础理论和图形用户界面程序设计方法 掌握AWT布局管理器的应用 熟练掌握常见Swing 组件和事件处理机制 熟悉图形绘制、字体及颜色设置的方法,6.1 Java图形用户界面概述,设计和实现图形用户界面的工作主要有: (1)创建组件(Component):创建组成界面的各种元素。 (2)指定布局(Layout):根据需
2、要排列组件的位置。 (3)响应事件(Event):定义图形用户界面的事件和各界面元素对不同事件的响应,从而实现图形用户界面与用户的交互功能。,6.1 Java图形用户界面概述,一、AWT与Swiwng组件 在Java1.0刚刚出现时,它包含了一个用于基本GUI程序设计的类库,Sun将它称为抽象窗口工具(Abstract Windows Toolkit,AWT)。基本AWT库采用将处理用户界面元素的任务委派给每个目标平台(如:Windows、Unix、Solaris等等)的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面元素的创建和动作。 1996年,Netscape创建了一种IFC(In
3、ternet Foundation Class)的GUI库,它采用了与AWT完全不同的工作方式。它将按钮、菜单这样的用户界面元素绘制在空白窗口上,而对等体只需要创建和绘制窗口。因此,Netscape的IFC部件在程序运行的所有平台上的外观和动作都一样。Sun与Netscape合作完善了这种方式,创建了一个名为Swing的用户界面库。现在,Swing已是Java基础类库(Java Foundation Class,JFC)的一部分。,6.1 Java图形用户界面概述,二、ava 图形API Java中涉及图形API的包有两个java.awt和javax.swing,AWT类定义在java.awt
4、包中,swing组件定义在javax.swing包中,大多数Swing组件的名字前都有前缀J,如JComponent,JApplet等,6.1 Java图形用户界面概述,三、Java图形用户界面的构成 1.容器 容器(Conatiner)是用来组织其他界面成分和元素的单元。它是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。 2.控制组件 控制组件是组成图形用户界面的最小单位之一,它里面不再包含任何其它的成分。控制组件的作用是完成与用户的一次交互,如接受用户命令、接受用户的文本输入、显示文本或图形等。 3.用户自定义成分图6-3用户
5、登录界面 除了以上标准的图形界面元素,还可以根据用户需要设计一些用户自定义的图形界面成分,,6.1 Java图形用户界面概述,四、图形用户界面程序实例 【例6-1】用Swins组件创建用户登录界面 。,6.2 Java布局管理,布局管理器属于AWT组件,常用布局管理器类主要有五个:FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout。 每一种容器都有自己默认的布局管理器,如果不希望使用默认的布局管理器,则可以使用Container的setLayout()方法来设置容器的布局管理器。,6.2 Java布局管理,1. FlowLay
6、out FlowLayout构造方法有如下几种: (1)FlowLayout():创建每行组件居中对齐,组件间距为5个像素单位的布局管理器对象。 (2)FlowLayout(int align):创建指定每行组件对齐方式,组件间距为5个像素单位的布局管理器对象。Align的取值是表示组件对齐方式的三个常量:CENTER(指定组件的每一行居中对齐)、LEFT(指定组件的每一行左对齐)、RIGHT(指定组件的每一行右对齐)。如: FlowLayout(FlowLayout.LEFT); (3)FlowLayout(int align ,int hgap ,int vgap):创建指定每行组件对齐方
7、式,指定组件间距的布局管器对象。其中第一个参数表示组件的对齐方式,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。如; FlowLayout(FlowLayout.RIGHT,20,40);,6.2 Java布局管理,2. BorderLayout BorderLayout(边框布局)将容器的布局分为上、下、左、右、中五个区域,分别对应为:North(北区)、South(南区)、West(西区)、East(东区)和Center(中区)。当容器的大小改变时,容器中的各个组件相对位置不变,其中间部分的尺寸会发生变化,四周组件宽度固定不变。 BorderLayout构造方
8、法有如下几种: (1)BorderLayout():创建组件间无间距的布局对象。 (2)BorderLayout(int hgap ,int vgap):创建指定组件间距的布局对象。,6.2 Java布局管理,3. GridLayout GridLayout网格布局管理器,将容器分成尺寸相同的网格,组件被放置在网格的空白处,顺序与流式布局一样。网络中的组件具有相同的大小。 GridLayout布局管理器有三个构造方法: (1)GridLayout():以每行一列的方式构建一个GridLayout对象。 (2)GridLayout(int row,int columns):根据指定行数和列数构造
9、一个GridLayout对象,组件间距为0。 (3)GridLayout(int row,int columns, int hgap ,int vgap):根据指定行数和列数构造一个GridLayout对象,组件间距按指定值设置。,6.2 Java布局管理,4. CardLayout CardLayout卡片布局管理器,将组件放在一系列卡片上,一次只能看到一张卡片,在一张卡片中只能放一个组件。使用构造方法CardLayout()可以构建CardLayout对象。 组件按添加顺序放在卡片序列中,使用下面的方法可以将组件添加到容器中: add(Component component, String
10、 name ); 其中String 型参数name给卡片中的组件指定一个标识。 为了使组件在使用CardLayout的容器中可见,可使用CardLayout对象的下列方法: (1)frist(Container container):显示容器中的第一张卡片。 (2)last(Container container):显示容器中的最后一张卡片。 (3)next(Container container):显示容器中的下一张卡片。 (4)show(Container container, String name):显示容器中指定名称的卡片。,6.2 Java布局管理,5. GridBagLayout
11、 GridBagLayout网格块布局管理器,是一种灵活而复杂的布局管理器,它与GridLayout局管理器相似,都是按网格安放组件,所不同的是GridBagLayout的组件可以大小不同,可以按任意次序添加。,6.3 Java事件处理,在Java中,事件源本身不处理事件,而是委托相应的事件监听器来处理,这种事件处理模式被称为委托模式。 每一个可以触发事件的组件被当作事件源,每一种事件都对应专门的监听器。监听器负责接收和处理这种事件。一个事件源可以触发多种事件,如果它注册了某种事件的监听器,那么这种事件就会被接收和处理。,6.3 Java事件处理,6.3 Java事件处理,事件、事件类型及对应
12、监听器接口,6.4 常用Swing组件的使用,一、JComponent中的常用属性和和方法 所有Swing控制组件都是JComponent的子类,它们都继承了JComponent的属性和方法 。 public Color getBackground() 获取组件的背景色。 public Font getFont() 获取组件的字体。 public Color getForeground() 获取组件的前景色。 public Graphics getGraphics() 获取此组件上使用的图形对象 public void setBackground(Color c) 设置组件的背景色。 publ
13、ic void setForeground(Color c) 设置组件的前景色。 public void setEnabled(boolean enabled) 设置是否启用此组件。 Public void setFont(Font font) 设置此组件的字体。 public void setSize(int width,int height) 设置此组件的大小。 Public void setVisible(boolean aFlag) 设置组件是否可见。 public void requestFocus() 使组件获得输入焦点。,6.4 常用Swing组件的使用,二、容器组件 设计GUI
14、时需要一个主窗口,用来放置不同的可视化组件。主窗口也称为顶层容器,它包含窗口中出现的所有其他组件。为了合理布局窗口中的组件,每个顶层容器可以包含一个或若干个中间容器,称其为内容面板。一个GUI应用程序至少有一个顶层容器。,6.4 常用Swing组件的使用,1. JFrame框架 JFrame是Swing图形用户界面应用程序中的主窗口,窗口有边界、标题、关闭按钮等。容器。 说明: (1)JFrame被默认初始化为不可见、且宽和高均为0个像素,可使用setVisible(true) 方法使之可见,并用setSize()设置大小。 (2)JFrame的默认布局管理器为BorderLayout。如果不
15、进行布局设置,只显示最后添加到框架中的一个组件,且显示在框架的中央、占据整个框架。 以下程序段可用于创建一个标题为:我的窗口的框架。 import java.awt.*; import java.awt. Swing.*; public class FrameDemo extends JFrame public static void main(String args) JFrame f = new JFrame(“我的窗口“); f.setSize(400,400); f.setTitle(“你好!“); f.setVisible(true); ,6.4 常用Swing组件的使用,2. JP
16、anel JPanel是一种添加到其他容器中使用的组件,GUI设计中一般将一组相关的组件添加到JPanel中,然后再将JPanel添加到框架或applet中。 JPanel的构造方法有: (1)JPanel():创建具有默FlowLayou布局的JPanel对象。 (2)JPanel(LayoutManager layout):创建具有指定布局管理器JPanel对象。 以下程序段是使用JPanel的有关核心语句: Panel pn1=new Panel(); pn1.setSize(100,200); pn1.setLoation(0,50); Frame f=new Frame(); f.add(pn1); pn1.add(button) JPanel的默认布局管理器是FlowLayout。,6.4 常用Swing组件的使用,三、按钮(JButton) 按钮是一种点击时触发行为的组件,是GUI中非常重要的一种基本组件。 1. JButton构造方法 JButton有如下类型的构造方法: JButton( ) 创建不带文本和图标的按钮。 JButton(Icon