界面编程精品课件_第1页
界面编程精品课件_第2页
界面编程精品课件_第3页
界面编程精品课件_第4页
界面编程精品课件_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、界面编程第1页,共77页,2022年,5月20日,8点23分,星期五Java图形用户界面概述图形用户界面概念图形用户界面(Graphical User Interface,GUI),使用图形方式借助菜单、按钮等标准界面元素和键盘、鼠标操作,实现人机交互。Java的AWT和Swingjava.awt包提供抽象窗口工具集(Abstract Window Tookit,AWT)。 javax.swing包提供JDK 1.2的Swing组件,它扩展了AWT组件的功能。 第2页,共77页,2022年,5月20日,8点23分,星期五AWT概述AWT可以说是Java中第一代的图形编程类库。AWT组件部分中的

2、一部分在Swing中有相应的替代者。例如Frame被扩展成Swing里的JFrame,Button被Swing的JButton替代等等。AWT中的其他部分如事件处理类、布局管理类、图像类、工具类等仍然在使用。第3页,共77页,2022年,5月20日,8点23分,星期五Swing介绍Java1.2引入称为Swing的新的GUI组件库,是Sun公司用来描述下一代图形界面的标准。 Swing继承了AWT,但它是100纯Java代码实现,不依赖于任何平台,并且可以自由设置和改变界面的整体风格Swing包括javax.swing包及其子包。Swing组件类大部分都以 J 开头。第4页,共77页,2022

3、年,5月20日,8点23分,星期五Swing 应用程序的容器层次设计 GUI 时,都有用于放置可视化组件的主窗口。容器对象可用于将组件组合在一起。Swing 中的容器有两类: - 顶级容器 - 中间容器 第5页,共77页,2022年,5月20日,8点23分,星期五顶级容器JFrame:用于框架窗口的类,此窗口带有边框、标题、用于关闭和最小化窗口的图标等。带 GUI 的应用程序通常至少使用一个框架窗口。JDialog:用于对话框的类。第6页,共77页,2022年,5月20日,8点23分,星期五中间容器JPanel:最灵活、最常用的中间容器。JScrollPane:与 JPanel 类似,但还可在

4、大的组件或可扩展组件周围提供滚动条。JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。JToolBar:按行或列排列一组组件(通常是按钮)。第7页,共77页,2022年,5月20日,8点23分,星期五Swing GUI框架顶级容器JToolBar组件JTabbedPane组件JScrollPane组件第8页,共77页,2022年,5月20日,8点23分,星期五JFrame是放置其他 Swing 组件的顶级容器JFrame 组件用于在 Swing 程序中创建窗体它的构造函数:JFrame()JFrame(String Title)组件直接添加至 JFrame

5、 对象,示例: frame.add(b);第9页,共77页,2022年,5月20日,8点23分,星期五基本的 Swing 应用程序import javax.swing.*; public class HelloSwing public static void main(String args) JFrame frame = new JFrame(HelloSwing); JLabel label = new JLabel(你好,Swing); frame.getContentPane().add(label); frame.setSize(300,200); frame.setVisible(

6、true); 导入必要的包,一般还导入: import java.awt.*; import java.awt.event.*; 设置一个顶级容器创建一个Swing组件将组件添加到容器内容窗格第10页,共77页,2022年,5月20日,8点23分,星期五中间容器 JPanel(面板)面板不是一个单独的窗口,它只是包含在窗口中的一个区域。面板是可以将许多组件组合起来的一种容器。最简单的创建面板的方式就是通过面板的构造函数 JPanel() 来进行。 必须将面板添加到窗体中。第11页,共77页,2022年,5月20日,8点23分,星期五JButtonJButton类允许用图标、字符串或两者同时构造

7、一个按钮。 构造函数如下:JButton()JButton(Icon icon):icon表示使用的图标JButton(String text):text表示使用的字符串JButton(String text, Icon icon) ImageIcon buttonIcon1 = new ImageIcon(on.gif); JButton b1 = new JButton(First Button, buttonIcon1);创建一个带图标的JButton第12页,共77页,2022年,5月20日,8点23分,星期五JPanel和JButton使用示例import java.awt.*;im

8、port javax.swing.*;class PanelDemo extends JFrame JPanel cpane = new JPanel(); JButton ok = new JButton(确定); JButton cancel = new JButton(取消);public PanelDemo( String title) super(title); cpane.add(ok); cpane.add(cancel); cpane.setBackground(Color.BLACK); add(cpane,BorderLayout.SOUTH); public static

9、 void main(String args) PanelDemo pd=new PanelDemo(JPanel测试); pd.setSize(300,200); pd.setVisible(true); 第13页,共77页,2022年,5月20日,8点23分,星期五复选框(JCheckBox)复选框用于为用户提供一组选项JCheckBox 类具有下列构造函数:JCheckBox()JCheckBox(Icon icon)JCheckBox(Icon icon, boolean selected)JCheckBox(String text)JCheckBox(String text, boo

10、lean selected)JCheckBox(String text, Icon icon)JCheckBox(String text, Icon icon, boolean selected)第14页,共77页,2022年,5月20日,8点23分,星期五单选按钮(JRadioButton)单选按钮允许用户从多个选项中选择其中一个ButtonGroup 用于在 Swing 中创建组JRadioButton 对象可使用下列构造函数创建:JRadioButton()JRadioButton(Icon icon)JRadioButton(Icon, boolean selected)JRadioB

11、utton(String text)JRadioButton(String text, boolean selected)JRadioButton(String text, Icon icon)JRadioButton(String text, Icon icon, boolean selected)第15页,共77页,2022年,5月20日,8点23分,星期五JCheckBox和JRadioButton使用示例import java.awt.*;import javax.swing.*;class Hobby extends JFrame JCheckBox c1 = new JCheckB

12、ox(阅读,false); JCheckBox c2 = new JCheckBox(音乐,false); JCheckBox c3 = new JCheckBox(绘画,false); JRadioButton rad1 = new JRadioButton(大专); JRadioButton rad2 = new JRadioButton(本科); JRadioButton rad3 = new JRadioButton(硕士); JLabel jl = new JLabel(您有什么爱好? ); JLabel j2 = new JLabel(您的最高学历? ); JButton exit

13、btn = new JButton(退出); public Hobby( ) setLayout(new GridLayout(9,1); add(jl); add(c1); add(c2); add(c3); add(j2); add(rad1); add(rad2); add(rad3); add(exitbtn); public static void main(String args) Hobby pb=new Hobby(); pb.setSize(300,220); pb.setVisible(true); 第16页,共77页,2022年,5月20日,8点23分,星期五标签(JLa

14、bel) 标签(JLabel)用来显示一段文本,常用在JTextField或者JTextArea前面,提示用户要填写什么样的信息。Jlabel用于显示文字,也可以同时显示文字和图标,构造函数如下:JLabel(Icon icon):icon表示使用的图标JLabel(String text): text表示文本信息JLabel(String text,Icon icon,int align):text表示使用的字符串; icon表示使用的图标;align表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。 ImageIcon buttonIcon1 = new ImageIcon

15、(036.gif); Label calv_label = new JLabel(这是个球, buttonIcon1, JLabel.RIGHT); 第17页,共77页,2022年,5月20日,8点23分,星期五组合框( JComboBox )文本域和下拉列表的组合构造函数如下:public JComboBox(Object items) : 包含指定数组元素的组合框String names = 弗雷德里克.福西斯, 约翰.克里沙姆, 玛丽.希金斯.克拉克,帕特丽夏.康威尔;JComboBox authors = new JComboBox(names); 第18页,共77页,2022年,5月

16、20日,8点23分,星期五列表( JList )在可供选择的选项很多时,可向用户呈现一个列表来供他们选择public JList (Object listData) :构造一个列表以显示指定数组listData的元素。 String stars = 安东尼奥.班德拉斯,来昂纳多.迪卡普尼奥, 桑德拉.布洛克,休.格兰特,朱莉亚.罗伯茨;JList moviestars = new JList(stars); 第19页,共77页,2022年,5月20日,8点23分,星期五文本域(JTextField)JTextField 组件允许输入或编辑单行文本此类的构造函数包括:JTextField(int

17、 columns)JTextField(String text)JTextField(String text, int columns)JLabel jl = new JLabel(“文本域”); frame.add(jl);JTextField tf = new JTextField(20); frame.add(tf); 第20页,共77页,2022年,5月20日,8点23分,星期五标签和文本域使用示例import java.awt.*;class TextLabelDemo extends Frame Label lblName=new Label(“名称 :”); TextField

18、txtName=new TextField(20); public TextLabelDemo (String title) super(title);setLayout(new FlowLayout();add(lblName);add(txtName); public static void main(String args) TextLabelDemo t=new TextLabelDemo(正在测试组件!);t.setSize(300,200); t.show(); 新建一个标签新建一个文本域添加到窗口第21页,共77页,2022年,5月20日,8点23分,星期五文本区(JTextAr

19、ea)JTextArea 组件用于接受来自用户的多行文本JTextArea 组件可使用下列构造函数创建:JTextArea(int rows, int cols)JTextArea(String text)JTextArea(String text, int rows, int cols)JTextArea ta = new JTextArea(5,10); frame.add(ta); 第22页,共77页,2022年,5月20日,8点23分,星期五菜单显示项目列表,指明各种任务。选择或单击某个选项时会打开另一个列表或子菜单。Swing 菜单由菜单栏、菜单和菜单项构成。菜单栏是所有菜单和菜单项

20、的根菜单第23页,共77页,2022年,5月20日,8点23分,星期五菜单栏(JMenuBar)菜单栏是窗口的主菜单,用来包括一组菜单。JMenuBar 是可通过 setJMenuBar方法添加到窗体。 JMenuBar menubar = new JMenuBar(); frame.setJMenuBar(menubar); 由多个 JMenu 组成。第24页,共77页,2022年,5月20日,8点23分,星期五菜单(JMenu)JMenu 在 JMenuBar 下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。 JMenu menu_file = new JMenu(文件);

21、menubar.add(menu_file); JMenu menu_edit = new JMenu(编辑); menubar.add(menu_edit); 第25页,共77页,2022年,5月20日,8点23分,星期五菜单项(JMenuItem)JMenu 或 JPopupMenu 中的一个组件,以文本字符串形式显示,可以具有图标 menu_file.add(new JMenuItem(打开); menu_file.add(new JMenuItem(保存); menu_file.addSeparator(); JMenuItem menuitem_exit = new JMenuIte

22、m(退出); menu_file.add(menuitem_exit)第26页,共77页,2022年,5月20日,8点23分,星期五Swing高级组件本小节讲述对话框、表格、树等高级应用。第27页,共77页,2022年,5月20日,8点23分,星期五JDialog( 对话框)(1)特点:1、显示提示信息和接受用户输入 2、要有一个父窗口,父窗口关闭时,它其中的对话框也关闭 3、是Window的子类,是可移动窗口 4、对话框是不可见,要用setVisible(true)变为可见,可用setVisible(false)隐藏对话框 。(2)创建对象 JDialog d=new JDialog(f,”

23、dialog”,true);第28页,共77页,2022年,5月20日,8点23分,星期五(3)常用构造方法JDialog(Frame win,boolean b) 构造一个非可视的对话框,通过setVisible(true)变为可视,b为true时,对话框为可视时其它构件不能接收用户的输入,此为有模式状态。JDialog(Frame win,String str,boolean b) 构造一个非可视的对话框 ,String类型为对话框的标题第29页,共77页,2022年,5月20日,8点23分,星期五简单对话框(JOptionPane)该类提供了一系列静态方法来生成一些简单的标准对话框,比如

24、消息框、确认框和输入框等。四种对话框可以采用静态方法showXXXDialog()来显示。如:showConfirmDialog() 显示确认对话框、showInputDialog() 显示输入文本对话框、showMessageDialog() 显示信息对话框、showOptionDialog() 显示选择性的对话框。第30页,共77页,2022年,5月20日,8点23分,星期五FileDialog(文件对话框)(Awt包)(1)特点:1、对文件进行选择存取的组件, 2、是可移动窗口 3、是Dialog的子类 4、是非可视的,要用show( )或setVisible(true)变为可视(2)创

25、建对象 FileDialog f=new FileDialog(this,dialog,FileDialog.SAVE);文件对话框分为二种类型: 1、装入或打开文件。2、保存文件 第31页,共77页,2022年,5月20日,8点23分,星期五文件选择框(JFileChooser)打开或者保存文件的时候,经常用到文件选择框(JFileChooser)。JFileChooser并不参与读文件或者写文件的操作。它只负责把文件路径取回来。JFileChooser可以设置FileFilter,可以过滤某些类型的文件。第32页,共77页,2022年,5月20日,8点23分,星期五表格(JTable)表格

26、(JTable)用于以表格的形式显示数据。与以往的JCompenent不同,JTable仅用于显示数据,而数据的组织与管理等全部在模型接口TableModel里面实现。第33页,共77页,2022年,5月20日,8点23分,星期五树(JTree)树(JTree)是一种看起来比较直观的视图,它功能十分强大,可以呈现各种效果的树状结构。但是JTree的API也比较复杂。好在JTree中有一些默认的实现,可以完成基本的树视图。第34页,共77页,2022年,5月20日,8点23分,星期五第35页,共77页,2022年,5月20日,8点23分,星期五布局管理器用户界面上的组件可以按不同方式排列。Jav

27、a使用布局管理器来管理这些排列方式。AWT提供一组用来进行布局管理的类,称为布局管理器。第36页,共77页,2022年,5月20日,8点23分,星期五布局类型Java中的布局类型包括以下几种:FlowLayout(流式布局)BorderLayout (边界布局) GridLayout(网格布局)第37页,共77页,2022年,5月20日,8点23分,星期五如何设置布局每个容器(Container对象)都有一个与它相关的缺省的布局管理器。 在没有设置新的布局前,在容器中添加组件都按照该容器的缺省布局排列。 第38页,共77页,2022年,5月20日,8点23分,星期五容器的默认布局管理器第39页

28、,共77页,2022年,5月20日,8点23分,星期五设置容器的布局管理器容器类提供设置布局管理器的方法frame1.setLayout(new FlowLayout();容器类提供添加和移去组件的方法public Component add(Component comp) /在容器中添加一个组件public void add(Component comp, Object constraints) /用于BorderLayout布局管理器public Component add(Component comp, int index) /用于GridLayout布局管理器第40页,共77页,202

29、2年,5月20日,8点23分,星期五流式布局(FlowLayout)流式布局是最简单的布局管理器,它把组件依次排列,如果一行显示不了就自动转到下一行,像组件在流动一样灵活。流式布局因此而得名。下面看一个例子。第41页,共77页,2022年,5月20日,8点23分,星期五FlowLayoutFlowLayout的构造函数有:FlowLayout( ):生成一个默认的流式布局FlowLayout(int alignment):可以设定每一行组件的对齐方式 FlowLayout(int alignment,int horz,int vert):可以设定组件间的水平和垂直距离JApplet和面板的缺省

30、布局默认组件从左上开始按从左到右、从上到下方式排列FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT);setLayout(exlayout); / 为容器设置新布局 第42页,共77页,2022年,5月20日,8点23分,星期五BorderLayout 2-1下面是BorderLayout所定义的构造函数:- BorderLayout( ):生成默认的边界布局- BorderLayout(int horz,int vert): 可以设定组件间的水平和垂直距离 窗口和对话框等的缺省布局组件可被置于容器的北、南、东、西或中间位置第43页,共

31、77页,2022年,5月20日,8点23分,星期五BorderLayout 2-2 BorderLayout 类定义了几个常量值以指定相应区域: BorderLayout.NORTH 对应容器的顶部BorderLayout.EAST 对应容器的右部BorderLayout.SOUTH 对应容器的底部BorderLayout.WEST 对应容器的左部BorderLayout.CENTER 对应容器的中部加入组件方法: void add(Component Obj, int region); . . . frame.setLayout(new BorderLayout(); Button btnE

32、ast=new Button(东); Button btnWest=new Button(西); Button btnNorth=new Button(北); Button btnSouth=new Button(南); Button btnCenter=new Button(中); frame.add(btnEast,BorderLayout.EAST); frame.add(btnWest,BorderLayout.WEST); frame.add(btnNorth,BorderLayout.NORTH); frame.add(btnSouth,BorderLayout.SOUTH); f

33、rame.add(btnCenter,BorderLayout.CENTER); . . .第44页,共77页,2022年,5月20日,8点23分,星期五网格布局(GridLayout)网格布局(GridLayout)把容器分成了规整的网格,每个网格内放置一个组件或者另一个容器。这些组件或者容器按照从左到右、从上到下的顺序依次放置。GridLayout布局的行和列可以通过构造函数的参数确定。第45页,共77页,2022年,5月20日,8点23分,星期五GridLayoutGridLayout的构造函数如下所示: - GridLayout(int row,int col):生成一个设定行数和列数

34、的网格布局 - GridLayout(int row,int col,int horz,int vert):可以设置组件之间的水平和垂直间隔 用于将容器区域划分为一个矩形网格组件按行和列排列. . . Button btn; / 声明按钮数组 String str=1,2,3,4,5,6,7,8,9; frame.setLayout(new GridLayout(3,3); btn=new Buttonstr.length; / 创建按钮数组 for(int i=0;istr.length;i+) btni=new Button(stri); frame.add(btni); 第46页,共77

35、页,2022年,5月20日,8点23分,星期五第47页,共77页,2022年,5月20日,8点23分,星期五Java的基于授权(委托)的事件模型Java 最新的事件处理方法是基于授权事件模型事件源生成事件并将其发送至一个或多个监听器监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件,然后返回。第48页,共77页,2022年,5月20日,8点23分,星期五事件在授权事件模型中,事件是一个描述事件源状态改变的对象 ,界面编程中存在各种各样的事件,并且在类库中都已定义为相应的事件类 。 通过鼠标、键盘与 GUI 界面直接或间接交互都会生成事件。 如:按下一个按钮、通过键盘输入

36、一个字符、选择列表框中的一项、点击一下鼠标等。第49页,共77页,2022年,5月20日,8点23分,星期五事件监听器接口:事件监听器接口基本和事件类是一一对应的,并且在类库中已定义监听器类是实现监听器接口的类,需要我们自己来完成(需要完成工作1)。 第50页,共77页,2022年,5月20日,8点23分,星期五 事件源(如:各种组件和容器)是一个生成事件的对象,它可以注册一个或多个监听器对象(需要完成工作2)。 事件源提供了一组方法,用于为事件注册一个或多个监听器。每种事件的类型都有其自己的注册方法。一般形式为: public void addListener (TypeListener e

37、)事件源、监听器和注册监听器某个事件源对象事件类型某个监听器类的对象第51页,共77页,2022年,5月20日,8点23分,星期五按钮单击事件示例public class MyEventTest extends JFrame Button myButton = new Button(蓝色); . . . / 创建面板或其他 GUI 组件 MyButton.addActionListener(new MyListener();class MyListener implements ActionListener public void actionPerformed(ActionEvent eve

38、nt) . . ./需要为事件进行的操作 实现了ActionListener接口的监听器类实现了ActionListener接口的actionPerformed方法,以便根据参数 ActionEvent 事件类对象的信息对事件做出响应为按钮事件注册监听器第52页,共77页,2022年,5月20日,8点23分,星期五按钮单击事件的响应及处理流程 第53页,共77页,2022年,5月20日,8点23分,星期五GUI类和事件监听类的关系前面的例子都是直接将提供界面的类同时作为事件监听器类。在复杂程序中经常是将GUI显示的类和事件处理类分离在两个类中。这样有利于界面和业务逻辑的分离,提高了代码的灵活性

39、和可重用性。然而,将事件处理器和图形界面放在两个类中时,又使得两个类之间的数据交流变得复杂。因此,经常将事件处理器类定义成GUI类的的内部类,以便事件处理器中直接访问GUI类中的成员变量。第54页,共77页,2022年,5月20日,8点23分,星期五AWT 事件类型 2-1事件类说明事件源ActionEvent 通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事件。 Button、List、MenuItem、TextField AdjustmentEvent 操纵滚动条时会生成此事件。 Scrollbar ComponentEvent 当一个组件移动、隐藏、调整大小或成为可见时会生成此事

40、件。Component ItemEvent 单击复选框或列表项时,或者当一个选择框或一个可选菜单的项被选择或取消时生成此事件。 Checkbox、CheckboxMenuItem、Choice、List FocusEvent 组件获得或失去键盘焦点时会生成此事件。 Component第55页,共77页,2022年,5月20日,8点23分,星期五AWT 事件类型 2-2事件类说明事件源KeyEvent 接收到键盘输入时会生成此事件。 Component MouseEvent 拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组件时,会生成此事件。 Component ContainerEve

41、nt 将组件添加至容器或从中删除时会生成此事件。Container TextEvent 在文本区或文本域的文本改变时会生成此事件 。TextField、TextArea WindowEvent 当一个窗口激活、关闭、失效、恢复、最小化、打开或退出时会生成此事件。 Window 第56页,共77页,2022年,5月20日,8点23分,星期五监听器接口事件和事件监听器接口基本上是一一对应打算处理事件的任何监听器类都必须实现相应的监听器接口。第57页,共77页,2022年,5月20日,8点23分,星期五监听器接口列表 2-1事件监听器 方法 ActionListener actionPerforme

42、d AdjustmentListener adjustmentValueChanged ComponentListener componentResizedcomponentMovedcomponentShowncomponentHidden ContainerListener componentAddedcomponentRemoved FocusListener focusLost、focusGained ItemListener itemStateChanged 第58页,共77页,2022年,5月20日,8点23分,星期五监听器接口列表 2-2事件监听器 方法 KeyListener

43、keyPressed、keyReleasedkeyTyped MouseListener mouseClicked、mouseEnteredmouseExited、mousePressedmouseReleased MouseMotionListener mouseDragged、mouseMoved TextListener textChanged WindowListener windowActivated、windowDeactivated windowClosed、windowClosingwindowIconified、windowDeiconifiedwindowOpened 第5

44、9页,共77页,2022年,5月20日,8点23分,星期五常见事件的处理举例行为事件的处理窗口事件的处理第60页,共77页,2022年,5月20日,8点23分,星期五行为事件的处理产生条件:按钮被按下、单行文本框中的回车、列表框的某项被双击或一个菜单项被选中行为事件的表示:1)从ActionEvent类生成一个对象监听类:行为监听器ActionListener2)表示:由实现了ActionListener接口的类的对象表示行为监听器。3)必须实现的方法: acitonPerformed4)注册一个行为事件源:需要调用组件的addActionListener方法。第61页,共77页,2022年,

45、5月20日,8点23分,星期五窗口事件的处理产生条件:当一个窗口被激活、撤消激活、打开、关闭、图标化或撤消图标化时窗口事件的表示:1)从WindowEvent类创建的对象表示窗口事件监听类:窗口监听器WindowListener2)表示:由实现了WindowListener接口的对象来表示窗口监听器。3)必须实现的方法: WindowListener接口指定了7种必须实现的方法,分别对应窗口的7种不同事件种类。4)注册一个窗口事件源,需要调用组件的addWindowListener方法。第62页,共77页,2022年,5月20日,8点23分,星期五窗口事件当一个窗口被激活、失活、关闭、正在关闭

46、、最小化、最大化、打开时将生成窗口事件。需要实现的方法如下:windowActivated、 windowClosedwindowClosing、 windowDeactivatedwindowDeiconified、windowIconifiedwindowOpened第63页,共77页,2022年,5月20日,8点23分,星期五窗口事件的处理windowOpened当窗口打开时windowClosing单击窗口右上角关闭按钮尝试关闭窗口时windowIconified单击窗口的最小化图标,窗口最小化时执行方法windowDeiconified单击窗口的还原按钮,窗口还原时执行windowA

47、ctivated当窗口在一系列窗口之前,成为当前窗口时执行,当打开窗口、还原窗口或点击某个窗口到前台都会调用该方法。windowDeactivated当某个窗口从前台移走时,例如图标化、关闭窗口或另外一个窗口被激活等,windowClosed当窗口关闭之后,执行了窗口的dispose方法后执行第64页,共77页,2022年,5月20日,8点23分,星期五 适配器 例子: 象WindowListener接口,有7个方法,而很多程序中可能只用到其中的windowClosing方法,以便写上窗口右上角的关闭按钮的关闭程序功能。这样就使程序编写显得非常麻烦。第65页,共77页,2022年,5月20日,

48、8点23分,星期五 为简化程序,Java类库中预定义了一些特殊类,这些类已经实现了相应的监听器接口,所有方法都写上了空语句。 编写事件监听器类时,便可通过继承这些特殊的类来达到实现相应的事件监听器接口的目的,同时又可以只选择程序中需要的方法进行重写,非常方便。 Java中将这些预定义的类称为事件适配器类,类似于监听器接口,适配器第66页,共77页,2022年,5月20日,8点23分,星期五适配器类 事件监听器接口 ComponentAdapter ComponentListener ContainerAdapter ContainerListener FocusAdapter FocusLis

49、tener KeyAdapter KeyListener MouseAdapter MouseListener MouseMotionAdapter MouseMotionListener WindowAdapter WindowListener 第67页,共77页,2022年,5月20日,8点23分,星期五 为方便使用,这些类的名称有一定的规则:只要将相应接口名称中的Listener改为Adapter即是该监听器接口对应的适配器类。 如WindowListener对应的适配器类为WindowAdapter,MouseListener对应的适配器类为MouseAdapter。 有一些接口如AcitonListener,本身只有一个方法需要实现,JDK中就没有定义该接口的Adapter第68页,共77页,2022年,5月20日,8点23分,星期五窗口事件示例import java.awt.*;import java.awt.event.*;class MyFrame extends Frame public MyFrame() setTitle(测试适配器类); setSize(300, 200); addWindowListener(new MyWindowAdapter(); class MyWindowAdapter e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论