《Java图形用户界面设计.ppt》由会员分享,可在线阅读,更多相关《Java图形用户界面设计.ppt(141页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、9.1图形用户界面设计概述9.1.1 9.1.1 GUIGUI支持包和简单支持包和简单GUIGUI程序例程序例1.1.java.awtjava.awt包包 JavaJava语语言言在在java.awtjava.awt包包中中提提供供了了大大量量地地进进行行GUIGUI设设计计所所使使用用的的类类和和接接口口,包包括括绘绘制制图图形形、设设置置字字体体和和颜颜色色、控控制制组组件件、处处理理事事件件等等内内容容,AWTAWT是是JavaJava语言进行语言进行GUIGUI程序设计的基础。程序设计的基础。2.2.javax.swingjavax.swing包包SwingSwing包包是是JavaJ
2、ava基基础础类类库库(Java Java Foundation Foundation ClassesClasses,JFCJFC)的的一一部部分分。SwingSwing提提供供了了从从按按钮到可分拆面板和表格的所有组件。钮到可分拆面板和表格的所有组件。SwingSwing组组件件是是JavaJava语语言言提提供供的的第第二二代代GUIGUI设设计计工工具具包包,它它以以AWTAWT为为基基础础,在在AWTAWT内内容容的的基基础础上上新新增增或或改改进进了了一一些些GUIGUI组组件件,使使得得GUIGUI程程序序功功能能更更强强大大,设设计计更更容容易易、更更方方便便。SwingSwin
3、g是是开开发发新新组组件件的的项项目目代代码码名名,现现在在,这这个个名字常用来引用新组件和相关的名字常用来引用新组件和相关的APIAPI。AWTAWT组组件件和和对对应应的的SwingSwing组组件件,从从名名称称上上很很容容易易记记忆忆和和区区别别。例例如如,AWTAWT的的框框架架类类、面面板板类类、按按钮钮类类和和菜菜单单类类,被被命命名名为为FrameFrame、PanelPanel、ButtonButton和和MenuMenu,而而SwingSwing对对应应的的组组件件类类被被命命名名为为JFrameJFrame、JPanelJPanel、JButtonJButton和和JMe
4、nuJMenu。与与AWTAWT组组件件相相比比,SwingSwing组组件件的的名名前前多多一一个个 “J J”字字母母。另另 外外,AWT AWT 组组 件件 在在 java.awtjava.awt包包 中中,而而 SwingSwing组组 件件 在在javax.swingjavax.swing包中。包中。3.3.一个一个Java GUIJava GUI简单程序简单程序【例例9.19.1】一一个个简简单单的的Swing Swing GUIGUI应应用用程程序序。在在一一个个框框架架窗窗口口中中显显示示两两个个标标签签和和一一个个按按钮钮:上上面面的的标标签签显显示示一一串串固固定定的的文文
5、字字信信息息,选选择择按按钮钮后后在在下下面面的的标标签签上上显显示系统现在的时间。示系统现在的时间。l limport import import import java.awtjava.awtjava.awtjava.awt.*;.*;.*;.*;l limport import import import java.awt.eventjava.awt.eventjava.awt.eventjava.awt.event.*;.*;.*;.*;l limport import import import javax.swingjavax.swingjavax.swingjavax.swing
6、.*;.*;.*;.*;l limport java.util.*;import java.util.*;import java.util.*;import java.util.*;l l/继承继承继承继承JFrameJFrameJFrameJFrame类并实现类并实现类并实现类并实现ActionListenerActionListenerActionListenerActionListener接口接口接口接口l lpublic class public class public class public class SwingDemoSwingDemoSwingDemoSwingDemo e
7、xtends extends extends extends JFrameJFrameJFrameJFrame implements implements implements implementsl l ActionListenerActionListenerActionListenerActionListener l l JButtonJButtonJButtonJButton b1;/b1;/b1;/b1;/声明按钮对象声明按钮对象声明按钮对象声明按钮对象l l JLabelJLabelJLabelJLabel l1,l2;/l1,l2;/l1,l2;/l1,l2;/声明标签对象声明标签
8、对象声明标签对象声明标签对象l l SwingDemoSwingDemoSwingDemoSwingDemo()/()/()/()/定义构造方法定义构造方法定义构造方法定义构造方法l l super(Swing super(Swing super(Swing super(Swing应用程序的例应用程序的例应用程序的例应用程序的例);/);/);/);/调用父类的构造方法调用父类的构造方法调用父类的构造方法调用父类的构造方法l l l1=new l1=new l1=new l1=new JLabelJLabelJLabelJLabel(一个一个一个一个GUIGUIGUIGUI应用程序的例子应用程
9、序的例子应用程序的例子应用程序的例子 ,l l JLabel.CENTERJLabel.CENTERJLabel.CENTERJLabel.CENTER);/);/);/);/定义标签,文字居中定义标签,文字居中定义标签,文字居中定义标签,文字居中l l l2=new l2=new l2=new l2=new JLabelJLabelJLabelJLabel();/();/();/();/定义无文字标签定义无文字标签定义无文字标签定义无文字标签l l b1=new b1=new b1=new b1=new JButtonJButtonJButtonJButton(现在时间现在时间现在时间现在时
10、间 T);/T);/T);/T);/定义按钮定义按钮定义按钮定义按钮l l b1.setMnemonic(KeyEvent.VK_T);/b1.setMnemonic(KeyEvent.VK_T);/b1.setMnemonic(KeyEvent.VK_T);/b1.setMnemonic(KeyEvent.VK_T);/设置按钮的快捷键设置按钮的快捷键设置按钮的快捷键设置按钮的快捷键l l b1.setActionCommand(time);/b1.setActionCommand(time);/b1.setActionCommand(time);/b1.setActionCommand(t
11、ime);/设置控制名设置控制名设置控制名设置控制名l l b1.addActionListener(this);/b1.addActionListener(this);/b1.addActionListener(this);/b1.addActionListener(this);/注册按钮事件注册按钮事件注册按钮事件注册按钮事件l l add(l1,BorderLayout.NORTH);/add(l1,BorderLayout.NORTH);/add(l1,BorderLayout.NORTH);/add(l1,BorderLayout.NORTH);/添加标签添加标签添加标签添加标签l1
12、l1l1l1l l add(l2,BorderLayout.CENTER);/add(l2,BorderLayout.CENTER);/add(l2,BorderLayout.CENTER);/add(l2,BorderLayout.CENTER);/添加标签添加标签添加标签添加标签l2l2l2l2l l add(b1,BorderLayout.SOUTH);/add(b1,BorderLayout.SOUTH);/add(b1,BorderLayout.SOUTH);/add(b1,BorderLayout.SOUTH);/添加标签添加标签添加标签添加标签b1b1b1b1l l l l /对
13、按钮引发事件编程对按钮引发事件编程对按钮引发事件编程对按钮引发事件编程l l public void public void public void public void actionPerformed(ActionEventactionPerformed(ActionEventactionPerformed(ActionEventactionPerformed(ActionEvent e)e)e)e)l l /捕获按钮事件捕获按钮事件捕获按钮事件捕获按钮事件l l Calendar c1=Calendar c1=Calendar c1=Calendar c1=Calendar.getIns
14、tanceCalendar.getInstanceCalendar.getInstanceCalendar.getInstance();();();();l l /获取系统日期和事件获取系统日期和事件获取系统日期和事件获取系统日期和事件l l if(e.getActionCommand().equals(timeif(e.getActionCommand().equals(timeif(e.getActionCommand().equals(timeif(e.getActionCommand().equals(time)l l /判断是否为所需的按钮事件判断是否为所需的按钮事件判断是否为所需的
15、按钮事件判断是否为所需的按钮事件l l l2.setText(l2.setText(l2.setText(l2.setText(“现在时间是现在时间是现在时间是现在时间是”+l l c1.get(Calendar.HOUR_OF_DAY)c1.get(Calendar.HOUR_OF_DAY)c1.get(Calendar.HOUR_OF_DAY)c1.get(Calendar.HOUR_OF_DAY)l l +“时时时时”+c1.get(Calendar.MINUTE)+c1.get(Calendar.MINUTE)+c1.get(Calendar.MINUTE)+c1.get(Calend
16、ar.MINUTE)+“分分分分”););););l l /设置标签文字设置标签文字设置标签文字设置标签文字l l l2.setHorizontalAlignment(JLabel.CENTER);l2.setHorizontalAlignment(JLabel.CENTER);l2.setHorizontalAlignment(JLabel.CENTER);l2.setHorizontalAlignment(JLabel.CENTER);l l /设置标签标签文字居中对齐设置标签标签文字居中对齐设置标签标签文字居中对齐设置标签标签文字居中对齐l l l l else System.exit(
17、0);else System.exit(0);else System.exit(0);else System.exit(0);l l l l public static void main(String public static void main(String public static void main(String public static void main(String argsargsargsargs)/)/)/)/主方法主方法主方法主方法l l JFrame.setDefaultLookAndFeelDecorated(trueJFrame.setDefaultLookAn
18、dFeelDecorated(trueJFrame.setDefaultLookAndFeelDecorated(trueJFrame.setDefaultLookAndFeelDecorated(true););););l l /加此语句显示为运行结果图的右图加此语句显示为运行结果图的右图加此语句显示为运行结果图的右图加此语句显示为运行结果图的右图 l l JFrameJFrameJFrameJFrame frame=new frame=new frame=new frame=new SwingDemoSwingDemoSwingDemoSwingDemo();();();();l l /创
19、建创建创建创建JFrameJFrameJFrameJFrame对象,初始不可见对象,初始不可见对象,初始不可见对象,初始不可见l l frame.setDefaultCloseOperationframe.setDefaultCloseOperationframe.setDefaultCloseOperationframe.setDefaultCloseOperation(l l JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE);/);/);/);/设置框架关闭按钮事件设置框架关闭
20、按钮事件设置框架关闭按钮事件设置框架关闭按钮事件l l frame.packframe.packframe.packframe.pack();/();/();/();/压缩框架的显示区域压缩框架的显示区域压缩框架的显示区域压缩框架的显示区域l l frame.setVisible(trueframe.setVisible(trueframe.setVisible(trueframe.setVisible(true);/);/);/);/显示框架主窗口显示框架主窗口显示框架主窗口显示框架主窗口l l l l 程序运行后显示的形式如下图程序运行后显示的形式如下图 。Java Swing GUIJa
21、va Swing GUI应用程序中的基本代码如下。应用程序中的基本代码如下。(1)(1)引入合适的包和类引入合适的包和类一一般般的的Swing Swing GUIGUI应应用用程程序序应应包包含含程程序序中中的的前前三三个个引引入入语语句句,它它们们分分别别表表示示引引入入awtawt包包、awtawt事事件件处处理理包和包和swingswing包。其他包按需引入。包。其他包按需引入。由由于于SwingSwing组组件件使使用用AWTAWT的的结结构构,包包括括AWTAWT的的事事件件驱驱动动模模式式,所所以以,使使用用swingswing组组件件的的程程序序一一般般需需要要使使用用awtaw
22、t包。包。(2)(2)使使用用缺缺省省的的观观感感或或设设置置自自己己的的观观感感(Look Look and and FeelFeel)(3)(3)设置一个顶层的容器设置一个顶层的容器(4)(4)根根据据需需要要,使使用用缺缺省省的的布布局局管管理理器器或或设设置置另另外外的布局管理器的布局管理器(5)(5)定义组件并将它们添加到容器定义组件并将它们添加到容器(6)(6)对组件或事件编码对组件或事件编码9.1.2 9.1.2 容器、组件、布局和观感容器、组件、布局和观感1.1.容器(容器(ContainerContainer)和组件(和组件(ComponentComponent)一一个个Ja
23、vaJava的的图图形形用用户户界界面面的的最最基基本本元元素素是是组组件件,组组件件是是可可以以以以图图形形化化的的方方式式显显示示在在屏屏幕幕上上并并能能与与用用户户进进行行交交互互的的对对象象,如如一一个个按按钮钮、一一个个文文本本框框等等。在在JavaJava语语言言中中,通通常常将将组组件件放放在在一一定定的的容容器器内内使使用用。容容器器实实际际上上是是一一种种具具有有容容纳纳其其他他组组件件和和容容器器的的功功能能的的组组件件。抽抽象象类类ContainerContainer是是所所有有容容器器的的父父类类,其其中中包包含含了了很很多多有有关关容容器器的的功功能能和和方方法法。而
24、而 类类 ContainerContainer又又 是是 JavaJava语语 言言 的的 组组 件件 类类ComponentComponent的子类。的子类。2.2.布局管理器(布局管理器(Layout ManagerLayout Manager)为为了了使使得得图图形形用用户户界界面面具具有有良良好好的的平平台台无无关关性性,在在JavaJava语语言言中中提提供供了了布布局局管管理理器器这这个个工工具具来来管管理理组组件件在在容容器器中中的的布布局局,而而不不使使用用直直接接设设置置组组件件位位置置和和大大小小的的方方式式。容容器器中中的的组组件件定定位位由由布布局局管管理理器器决决定定
25、。每每个个容容器器都都有有一一个个缺缺省省的的布布局局管管理理器器,当当容容器器需需要要对对某某个个组组件件进进行行定定位位或或判判断断其其大大小小尺尺寸寸时时,就就会会调调用用其其相相应应的的布布局局管管理理器器。但但也也可可以以不不用用缺缺省省的的布布局局管管理理器器,在在程程序中指定其新的布局管理器。序中指定其新的布局管理器。JavaJava平平台台提提供供多多种种布布局局管管理理器器,常常用用的的有有FlowLayoutFlowLayout、BorderLayoutBorderLayout、GridLayoutGridLayout、CardLayoutCardLayout、BoxLay
26、outBoxLayout和和GridBagLayoutGridBagLayout等等。使使用用不不同同的的布布局局管管理理器,组件在容器上的位置和大小都是很不一样的。器,组件在容器上的位置和大小都是很不一样的。在程序中安排组件的位置和大小时,应该注意:在程序中安排组件的位置和大小时,应该注意:(1)(1)容容器器中中的的布布局局管管理理器器负负责责各各个个组组件件的的大大小小和和位位置置。因因此此用用户户无无法法在在这这种种情情况况下下直直接接设设置置这这些些属属性性。若若试试图图使使 用用 JavaJava语语 言言 提提 供供 的的 setLocation()setLocation()、s
27、etSize()setSize()、setBoundssetBounds()()等方法,则都会被布局管理器覆盖。等方法,则都会被布局管理器覆盖。(2)(2)若若用用户户确确实实需需要要亲亲自自设设置置组组件件的的位位置置和和大大小小,则则应应取消该容器的布局管理器,方法为:取消该容器的布局管理器,方法为:l l setLayout(nullsetLayout(nullsetLayout(nullsetLayout(null););););随随后后,用用户户必必须须使使用用setLocation()setLocation()、setSize()setSize()、setBoundssetBoun
28、ds()()等等方方法法为为组组件件设设置置大大小小和和位位置置,但但这这种种方方法法将将会会导导致致程序的系统相关。程序的系统相关。在在一一个个GUIGUI应应用用程程序序的的界界面面上上,除除了了可可以以见见到到上上述述的的标标准准GUIGUI元元素素外外,还还可可以以见见到到一一些些非非交交互互的的起起到到装装饰饰、美美化界面的作用的几何图形、图案、图像等内容。化界面的作用的几何图形、图案、图像等内容。3.3.观感(观感(Look and FeelLook and Feel)Java Java swingswing的的一一个个重重要要特特征征是是它它的的可可插插入入的的“观观感感”体体系
29、系。一一个个SwingSwing应应用用程程序序或或一一个个最最终终用用户户可可指指明明所所需需要要的的观观感感,使使得得SwingSwing应应用用程程序序的的外外观观和和行行为为都都可可以以被被定定制制。SwingSwing运运行行一一个个缺缺省省的的JavaJava观观感感(也也称称为为MetalMetal观观感感),还还实实现现了了模模仿仿MotifMotif和和WindowsWindows的的观观感感。这这样样,一一个个SwingSwing程程序序可可拥拥有有JavaJava程程序序的的独独特特外外观观,也也可可以以拥拥有熟悉的有熟悉的WindowsWindows操作系统外观。操作系
30、统外观。在在本本章章稍稍后后部部分分的的单单选选按按钮钮的的程程序序例例中中分分别别显显示示了了WindowsWindows、MotifMotif和和MetalMetal三种不同风格的观感。三种不同风格的观感。一一般般在在应应用用程程序序的的JFrameJFrame的的构构造造方方法法中中或或在在JAppletJApplet的的initinit()()方法中进行观感的设置。方法中进行观感的设置。【例【例9.29.2】设置观感。】设置观感。l limport import import import javax.swingjavax.swingjavax.swingjavax.swing.*;.
31、*;.*;.*;l limport import import import java.awtjava.awtjava.awtjava.awt.*;.*;.*;.*;l lpublic class public class public class public class SetLAFSetLAFSetLAFSetLAF l l public static void public static void public static void public static void setNativeLookAndFeelsetNativeLookAndFeelsetNativeLookAndF
32、eelsetNativeLookAndFeel()()()()l l try try try try l l UIManager.setLookAndFeel(UIManagerUIManager.setLookAndFeel(UIManagerUIManager.setLookAndFeel(UIManagerUIManager.setLookAndFeel(UIManager.l l getSystemLookAndFeelClassNamegetSystemLookAndFeelClassNamegetSystemLookAndFeelClassNamegetSystemLookAndF
33、eelClassName();();();();l l catch(Exception e)catch(Exception e)catch(Exception e)catch(Exception e)l l System.out.printlnSystem.out.printlnSystem.out.printlnSystem.out.println(设置设置设置设置native LAFnative LAFnative LAFnative LAF错误错误错误错误:+e);e);e);e);l l l l l l public static void public static void pub
34、lic static void public static void setJavaLookAndFeelsetJavaLookAndFeelsetJavaLookAndFeelsetJavaLookAndFeel()()()()l l try try try try l l UIManager.setLookAndFeel(UIManagerUIManager.setLookAndFeel(UIManagerUIManager.setLookAndFeel(UIManagerUIManager.setLookAndFeel(UIManager.l l getCrossPlatformLook
35、AndFeelClassNamegetCrossPlatformLookAndFeelClassNamegetCrossPlatformLookAndFeelClassNamegetCrossPlatformLookAndFeelClassName();();();();l l catch(Exception e)catch(Exception e)catch(Exception e)catch(Exception e)l l System.out.printlnSystem.out.printlnSystem.out.printlnSystem.out.println(设置设置设置设置Jav
36、a LAFJava LAFJava LAFJava LAF错误错误错误错误:+:+:+:+e);e);e);e);l l l l l l public static void public static void public static void public static void setMotifLookAndFeelsetMotifLookAndFeelsetMotifLookAndFeelsetMotifLookAndFeel()()()()l l try try try try l l UIManager.setLookAndFeelUIManager.setLookAndFee
37、lUIManager.setLookAndFeelUIManager.setLookAndFeel(“l l com.sun.java.swing.plafcom.sun.java.swing.plafcom.sun.java.swing.plafcom.sun.java.swing.plaf.l l motif.MotifLookAndFeelmotif.MotifLookAndFeelmotif.MotifLookAndFeelmotif.MotifLookAndFeel););););l l catch(Exception e)catch(Exception e)catch(Except
38、ion e)catch(Exception e)l l System.out.printlnSystem.out.printlnSystem.out.printlnSystem.out.println(设置设置设置设置Motif LAFMotif LAFMotif LAFMotif LAF错误错误错误错误:+:+:+:+e);e);e);e);l l l l l l 因因因因为为为为setLookAndFeelsetLookAndFeelsetLookAndFeelsetLookAndFeel()()方方法法抛抛出出异异常常,因因此此设设置置观观感感的的代代码码应应捕捕捉捉异异常常。本本例例创
39、创建建的的类类SetLAFSetLAF可可在在以以后后的的程程序中设置观感时使用。序中设置观感时使用。9.1.39.1.3事件处理事件处理在在一一个个GUIGUI程程序序中中,为为了了能能够够接接收收用用户户的的输输入入、命命令令的的按按键键和和鼠鼠标标操操作作,程程序序系系统统首首先先应应该该能能够够识识别别这这些些操操作作并并做做出出相相应应的的响响应应。通通常常一一个个键键盘盘和和鼠鼠标标操操作作将将引引发发一一个个系系统统预预先先定定义义好好的的事事件件,用用户户程程序序只只要要编编写写代代码码定定义义每每个个事事件件发发生生时时程程序序应应做做出出何何种种响响应应即即可可。这这些些代
40、代码码会会在在它它们们对对应应的的事事件件发发生生时时由由系系统统自自动动调调用用,这这就就是是GUIGUI程程序序中中事事件件和和事事件件响响应应的基本原理。的基本原理。在在JavaJava语语言言中中,除除了了键键盘盘和和鼠鼠标标操操作作,系系统统的的状状态态改变也可以引发事件。改变也可以引发事件。可可能能产产生生事事件件的的组组件件称称为为事事件件源源,不不同同事事件件源源上上发发生生的的事事件件种种类类是是不不同同的的。若若希希望望事事件件源源上上引引发发的的事事件件被被程程序序处处理理,需需要要将将事事件件源源注注册册给给能能够够处处理理该该事事件件源源上上那那种种事事件件类类型型的
41、的监监听听器器。监监听听器器具具有有监监听听和和处处理理某某类类事事件件的的功功能能,它它可可以以是是包包容容事事件件源源的的容容器器,也也可可以以是是另另外外的的对对象象。也也就就是是说说,事事件件源源和和事事件件处处理理是是分分开开的的,一一般般组组件件都都不不处处理理自自己己的的事事件件,而而将将事事件件处处理理委委托托给给外外部部的的处处理理实实体体,这这种种事事件件处处理理模模型型称称为为授授权权处处理理模模型。型。事件的行为多种多样,由不同的监听器处理。编写事事件的行为多种多样,由不同的监听器处理。编写事件处理程序首先应确定关注的事件属于何种监听器类件处理程序首先应确定关注的事件属
42、于何种监听器类型。型。在在AWTAWT中,提供中,提供1111种标准的监听器类型,见下表。种标准的监听器类型,见下表。l l 监听器监听器 适配器类适配器类 注册方法注册方法 l lActionListenerActionListener addActionListeneraddActionListenerl lAdjustmentListenerAdjustmentListener addAdjustmentListeneraddAdjustmentListenerl lComponentListenerComponentListener ComponentAdapterComponentA
43、dapter addComponentListeneraddComponentListenerl lContainerListenerContainerListener ContainerAdapterContainerAdapter addContainerListeneraddContainerListenerl lFocusListenerFocusListener FocusAdapterFocusAdapter addFocusListeneraddFocusListenerl lItemListenerItemListener addItemListeneraddItemListe
44、nerl lKeyListenerKeyListener KeyAdapterKeyAdapter addKeyListeneraddKeyListenerl lMouseListenerMouseListener MouseAdapterMouseAdapter addMouseListeneraddMouseListenerl lMouseMotionListenerMouseMotionListener MouseMotionAdapterMouseMotionAdapter addMouseMotionListeneraddMouseMotionListenerl lTextListe
45、nerTextListener addTextListeneraddTextListenerl lWindowListenerWindowListener WindowAdapterWindowAdapter addWindowListeneraddWindowListener在在确确定定监监听听器器类类型型后后,要要用用事事件件源源类类的的注注册册方方法法来来注注册册一一个个监监听听器器类类的的对对象象。这这样样,事事件件源源产产生生的的事事件件会会传传送送给给已已注注册册的的处处理理该该类类事事件件的的监监听听器器对对象象,该该对对象象将将自自动动调调用用相相应应的的事事件件处处理理方方法
46、法来来处处理理该该事事件件。具具体体的的注注册册方方法法 是是:用用 监监 听听 器器 类类 的的 对对 象象 作作 为为 参参 数数 调调 用用 事事 件件 源源 本本 身身 的的 addXxxListeneraddXxxListener()()方方法法。该该方方法法的的参参数数是是一一个个监监听听器器类类的的对对象象,有有多多种种形式。例如:形式。例如:l l(1)(1)(1)(1)分分分分离离离离的的的的监监监监听听听听器器器器类类类类,该该该该类类类类通通通通常常常常为为为为继继继继承承承承相相相相应应应应事事事事件件件件适适适适配配配配器器器器类类类类的的的的子子子子类,类中包含了事
47、件处理方法。参数是该类的一个对象。类,类中包含了事件处理方法。参数是该类的一个对象。类,类中包含了事件处理方法。参数是该类的一个对象。类,类中包含了事件处理方法。参数是该类的一个对象。l l(2)(2)(2)(2)实实实实现现现现监监监监听听听听器器器器接接接接口口口口,参参参参数数数数为为为为thisthisthisthis,表表表表示示示示本本本本对对对对象象象象就就就就是是是是一一一一个个个个监监监监听听听听器类的对象。在本类中包含事件处理方法。器类的对象。在本类中包含事件处理方法。器类的对象。在本类中包含事件处理方法。器类的对象。在本类中包含事件处理方法。l l(3)(3)(3)(3)
48、有有有有名名名名内内内内部部部部类类类类,参参参参数数数数形形形形式式式式为为为为继继继继承承承承事事事事件件件件适适适适配配配配器器器器类类类类的的的的子子子子类类类类对对对对象象象象,在子类中包含事件处理方法。在子类中包含事件处理方法。在子类中包含事件处理方法。在子类中包含事件处理方法。l l(4)(4)(4)(4)匿匿匿匿名名名名内内内内部部部部类类类类,参参参参数数数数形形形形式式式式为为为为用用用用newnewnewnew开开开开始始始始的的的的一一一一个个个个无无无无名名名名的的的的类类类类定定定定义义义义。其中包含事件处理方法。其中包含事件处理方法。其中包含事件处理方法。其中包含
49、事件处理方法。9.2布局管理器在在容容器器中中所所有有组组件件的的布布局局(位位置置和和大大小小)由由布布局局管管理理器器来来 控控 制制。在在 JavaJava语语 言言 中中 提提 供供 了了 FlowLayoutFlowLayout、BorderLayoutBorderLayout、GridLayoutGridLayout、CardLayoutCardLayout和和GridBagLayoutGridBagLayout等多种布局管理器。等多种布局管理器。每每种种容容器器都都有有自自己己缺缺省省的的布布局局管管理理器器。缺缺省省地地,JPanelJPanel使用使用FlowLayoutFl
50、owLayout,而内容窗格而内容窗格 ContentPaneContentPane(JAppletJApplet、JDialogJDialog和和 JFrameJFrame对对 象象 的的 主主 容容 器器)使使 用用BorderLayoutBorderLayout。如如果果不不希希望望使使用用缺缺省省的的布布局局管管理理器器,则则可可使使用用所所有有容容器器的的父父类类ContainerContainer的的setLayoutsetLayout()()方方法法来来改变缺省的布局管理器。改变缺省的布局管理器。1.1.FlowLayoutFlowLayoutFlowLayoutFlowLayo