《模块8图形用户界面编程电子课件 Java程序设计案例教程.ppt》由会员分享,可在线阅读,更多相关《模块8图形用户界面编程电子课件 Java程序设计案例教程.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录目录图形用户界面编程图形用户界面编程学习目标学习目标学习目标学习目标了解图形用户界面编程方法及思路。了解图形用户界面编程方法及思路。了解事件及事件处理模式。了解事件及事件处理模式。掌握常用的图形用户界面组件。掌握常用的图形用户界面组件。掌握容器布局的设置及组件的添加。掌握容器布局的设置及组件的添加。掌握常见事件类型及事件处理方法。掌握常见事件类型及事件处理方法。目录目录案例引入案例引入统计按钮单击的次数统计按钮单击的次数案例案例说明明 用户通过图形用户界面与计算机系统进行交互,基于这样的用户通过图形用户界面与计算机系统进行交互,基于这样的程序特点,根据图形用户界面编程的主要方法,我们首先来
2、编写程序特点,根据图形用户界面编程的主要方法,我们首先来编写一个一个Java应用程序,统计按钮的单击次数。应用程序,统计按钮的单击次数。本案例程序编辑、编译运行后将会显示图形界面,为用户提供按本案例程序编辑、编译运行后将会显示图形界面,为用户提供按钮操作,随着用户单击按钮次数的变化,通过文本信息的方式显钮操作,随着用户单击按钮次数的变化,通过文本信息的方式显示用户单击按钮的次数统计。示用户单击按钮的次数统计。通过这个案例,我们可以了解图形用户界面的基本结构,熟通过这个案例,我们可以了解图形用户界面的基本结构,熟悉常用的组件和容器,掌握如何添加界面元素以及如何响应事件悉常用的组件和容器,掌握如何
3、添加界面元素以及如何响应事件并处理事件。并处理事件。目录目录案例引入案例引入统计按钮单击的次数统计按钮单击的次数案例分析案例分析 根据案例要求,首先要完成图形用户界面的构造,设置按根据案例要求,首先要完成图形用户界面的构造,设置按钮及文本信息显示的位置,按钮对象监听并处理引发的动作事钮及文本信息显示的位置,按钮对象监听并处理引发的动作事件,并以文本信息的形式显示统计单击按钮次数结果。在已经件,并以文本信息的形式显示统计单击按钮次数结果。在已经搭建好的搭建好的Java开发环境中,利用文本编辑器编辑源程序,完成开发环境中,利用文本编辑器编辑源程序,完成编译和运行。编译和运行。目录目录8.2 知识准
4、备知识准备最基本的图形用户界面最基本的图形用户界面最基本的图形用户界面最基本的图形用户界面容器组件容器组件容器组件容器组件布局管理组件布局管理组件布局管理组件布局管理组件事件的处理事件的处理事件的处理事件的处理GUIGUI系统系统系统系统的组成的组成的组成的组成目录目录8.2.1 GUI编程基础编程基础l使用GUI进行程序设计时,首先应搞清楚诸多界面元素之间的层次关系,这样才能把握各种界面元素的功能。lAWT组件定义在java.awt包中,主要的类与继承关系如图所示。目录目录8.2.1 GUI编程基础编程基础lSwing组件则定义在javax.swing包中,主要的类与继承关系如图所示。目录目
5、录8.2.2 事件处理事件处理 Java Java采用委托事件模型来处理事件。委托事件模型的特点是将采用委托事件模型来处理事件。委托事件模型的特点是将采用委托事件模型来处理事件。委托事件模型的特点是将采用委托事件模型来处理事件。委托事件模型的特点是将事件的处理委托给独立的对象,而不是组件本身,从而将使用者事件的处理委托给独立的对象,而不是组件本身,从而将使用者事件的处理委托给独立的对象,而不是组件本身,从而将使用者事件的处理委托给独立的对象,而不是组件本身,从而将使用者界面与程序逻辑分开。委托事件模型是由产生事件的对象(事件界面与程序逻辑分开。委托事件模型是由产生事件的对象(事件界面与程序逻辑
6、分开。委托事件模型是由产生事件的对象(事件界面与程序逻辑分开。委托事件模型是由产生事件的对象(事件源)、事件对象本身及监听器对象之间的关系组成的,它们之间源)、事件对象本身及监听器对象之间的关系组成的,它们之间源)、事件对象本身及监听器对象之间的关系组成的,它们之间源)、事件对象本身及监听器对象之间的关系组成的,它们之间的关系如图所示。的关系如图所示。的关系如图所示。的关系如图所示。目录目录8.2.3 常用组件与容器 图形用户界面是由组件和容器构成的。图形用户界面是由组件和容器构成的。图形用户界面是由组件和容器构成的。图形用户界面是由组件和容器构成的。组件是图形用户界面中不可再分的最小元素。组
7、件又组件是图形用户界面中不可再分的最小元素。组件又组件是图形用户界面中不可再分的最小元素。组件又组件是图形用户界面中不可再分的最小元素。组件又称为控制组件,它的功能是与用户完成一次交互操作。称为控制组件,它的功能是与用户完成一次交互操作。称为控制组件,它的功能是与用户完成一次交互操作。称为控制组件,它的功能是与用户完成一次交互操作。SwingSwing组件包括一些比较简单的组件,如标签、按钮、组件包括一些比较简单的组件,如标签、按钮、组件包括一些比较简单的组件,如标签、按钮、组件包括一些比较简单的组件,如标签、按钮、组合框及列表等,也包括一些比较复杂的组件,如文本组合框及列表等,也包括一些比较
8、复杂的组件,如文本组合框及列表等,也包括一些比较复杂的组件,如文本组合框及列表等,也包括一些比较复杂的组件,如文本控件、菜单、表格、进度条、文件选择器等,它们都存控件、菜单、表格、进度条、文件选择器等,它们都存控件、菜单、表格、进度条、文件选择器等,它们都存控件、菜单、表格、进度条、文件选择器等,它们都存放在放在放在放在javax.swingjavax.swing包中。包中。包中。包中。容器是若干个组件和容器的集合。容器中包含了许多容器是若干个组件和容器的集合。容器中包含了许多容器是若干个组件和容器的集合。容器中包含了许多容器是若干个组件和容器的集合。容器中包含了许多界面元素,这些元素可以是组
9、件,也可以是容器。容器界面元素,这些元素可以是组件,也可以是容器。容器界面元素,这些元素可以是组件,也可以是容器。容器界面元素,这些元素可以是组件,也可以是容器。容器实际上是对图形界面中的界面元素的一种管理,其中顶实际上是对图形界面中的界面元素的一种管理,其中顶实际上是对图形界面中的界面元素的一种管理,其中顶实际上是对图形界面中的界面元素的一种管理,其中顶层容器和中间容器是常用的两类形式。层容器和中间容器是常用的两类形式。层容器和中间容器是常用的两类形式。层容器和中间容器是常用的两类形式。目录目录1.顶层容器顶层容器JFrame():创建不指定标题的窗体。:创建不指定标题的窗体。JFrame(
10、String title):创建指定标题的窗体:创建指定标题的窗体。JFrame 是最常用的一种顶层容器,它的作用是创建一个顶层的是最常用的一种顶层容器,它的作用是创建一个顶层的Windows窗体,它的外观就像平常窗体,它的外观就像平常Windows系统下见到的窗体,系统下见到的窗体,带有标题栏和控制按钮等。带有标题栏和控制按钮等。Frame类提供两种格式的构造方法:类提供两种格式的构造方法:目录目录1.顶层容器顶层容器lJFrame类的其他常用方法有:void setDefaultCloseOperation(int op):设置关闭窗口时所做的操作,op可取的值包括HIDE_ON_CLOS
11、E(关闭窗口时隐藏)、EXIT_ON_CLOSE(关闭窗口时推出应用程序,不可用于Applet)、DISPOSE_ON_CLOSE(关闭窗口时隐藏窗口并释放资源)、NOTHING_ON_CLOSE(关闭窗口时不做任何事情,通常配合监听器使用)。void setContentPane(Container contentPane):设置窗口的内容窗格。Container getContentPane():返回窗口的内容窗格。void setJMenuBar(JMenuBar menuBar):设置窗口的菜单栏。JMenuBar getJMenuBar():返回窗口的菜单栏。void setSize
12、(int width,int height):将窗口设置宽为width,高为height。目录目录1.顶层容器顶层容器 JDialog 与与JFrame一样,一样,JDialog也是一种顶层容器,但不能作为独也是一种顶层容器,但不能作为独立的窗口容器使用,必须依附于某个窗口(通常是立的窗口容器使用,必须依附于某个窗口(通常是JFrame)。)。创建模态对话框常使用类创建模态对话框常使用类JOptionPane,在类,在类JOptionPane内部会自动创建一个内部会自动创建一个JDialog,并将自己添加到该对话框的内容,并将自己添加到该对话框的内容窗格中。窗格中。JOptionPane类提供
13、了很多静态方法供程序直接使用,类提供了很多静态方法供程序直接使用,最常使用到的几种对话框有最常使用到的几种对话框有以下几种。以下几种。目录目录1.顶层容器顶层容器 JOptionPane.showInputDialog(String str)JOptionPane.showConfirmDialog(Component parentComp,Object message)显示包含显示包含3个按钮的确认对话框,按钮分别为个按钮的确认对话框,按钮分别为“是是”、“否否”和和“撤撤销销”,该方法返回整型值,该方法返回整型值0、1或或2,根据返回值可分别编程执行相应,根据返回值可分别编程执行相应的操作
14、。的操作。显示有一个文本输入框的对话框,参数是文本输入框的标题。显示有一个文本输入框的对话框,参数是文本输入框的标题。方法的返回值是文本输入框中输入的字符串。方法的返回值是文本输入框中输入的字符串。JOptionPane.showMessageDialog(Component parentComp,Object message)显示信息提示对话框。第显示信息提示对话框。第1个参数指明信息提示对话框所依附的父组个参数指明信息提示对话框所依附的父组件,若取值为件,若取值为null,则表明对话框不依附于任何父组件。第,则表明对话框不依附于任何父组件。第2个参数个参数message通常是通常是Obje
15、ct类的子类对象,如图标、字符串、数组和按类的子类对象,如图标、字符串、数组和按钮、文本区等图形组件,它们将显示在信息提示对话框中钮、文本区等图形组件,它们将显示在信息提示对话框中目录目录2.中间容器 Swing Swing的中间容器包含了一些可以被使用在许多不同的中间容器包含了一些可以被使用在许多不同的中间容器包含了一些可以被使用在许多不同的中间容器包含了一些可以被使用在许多不同环境下的中间层容器,主要包括面板容器(环境下的中间层容器,主要包括面板容器(环境下的中间层容器,主要包括面板容器(环境下的中间层容器,主要包括面板容器(JPanelJPanel类)、类)、类)、类)、分隔窗格(分隔窗
16、格(分隔窗格(分隔窗格(JSplitPaneJSplitPane类)、带滚动条的窗格容器类)、带滚动条的窗格容器类)、带滚动条的窗格容器类)、带滚动条的窗格容器(JScrollPaneJScrollPane类)、工具栏(类)、工具栏(类)、工具栏(类)、工具栏(JToolBarJToolBar类)等。它们都类)等。它们都类)等。它们都类)等。它们都是是是是JComponentJComponent的子类,通常放在其他容器类中。这里的子类,通常放在其他容器类中。这里的子类,通常放在其他容器类中。这里的子类,通常放在其他容器类中。这里主要介绍用途广泛的面板容器。主要介绍用途广泛的面板容器。主要介绍用
17、途广泛的面板容器。主要介绍用途广泛的面板容器。面板容器与顶层容器不同,它不能独立存在,必须被面板容器与顶层容器不同,它不能独立存在,必须被面板容器与顶层容器不同,它不能独立存在,必须被面板容器与顶层容器不同,它不能独立存在,必须被添加到其他容器内部。面板可以嵌套,从而设计出复杂的添加到其他容器内部。面板可以嵌套,从而设计出复杂的添加到其他容器内部。面板可以嵌套,从而设计出复杂的添加到其他容器内部。面板可以嵌套,从而设计出复杂的图形用户界面。图形用户界面。图形用户界面。图形用户界面。目录目录3.标签l标签(JLabel)对象通常被用来实现一些说明性的描述。在Swing中,用JLabel类实现标签
18、组件,并且显示形式得到了扩展,它不仅可以显示文字,还可以显示图片。它的构造方法有以下6种形式:JLabel():无参数构造方法,构造一个内容为空的标签。JLabel(Icon image):构造一个显示图标的标签。JLabel(String text):构造一个显示文本信息的标签。JLabel(Icon image,int horizontalAlignment):构造一个显示图标的标签,水平对齐方式由int型参数horizontalAlignment指定,它的取值可以是常量LEFT、CENTER、RIGHT、LEADING和TRAILING。JLabel(String text,int ho
19、rizontalAlignment):构造一个显示文本信息的标签,水平对齐方式由int型参数horizontalAlignment指定。JLabel(String text,Icon image,int horizontalAlignment):构造一个同时显示文本信息和图标的标签水平对齐方式由int型参数horizontalAlignment指定。目录目录4.按钮 按钮是按钮是按钮是按钮是JavaJava图形用户界面的基本组件之一,也是图形用户界面的基本组件之一,也是图形用户界面的基本组件之一,也是图形用户界面的基本组件之一,也是种类最多,使用最频繁的组件。经常用到的按钮有种类最多,使用最频
20、繁的组件。经常用到的按钮有种类最多,使用最频繁的组件。经常用到的按钮有种类最多,使用最频繁的组件。经常用到的按钮有4 4种形式,即种形式,即种形式,即种形式,即JButtonJButton、JToggleButtonJToggleButton、JCheckBoxJCheckBox和和和和JRadioButtonJRadioButton。这些按钮类的父类是。这些按钮类的父类是。这些按钮类的父类是。这些按钮类的父类是AbstractButtonAbstractButton,各种按钮上都可以设置文本、设置,各种按钮上都可以设置文本、设置,各种按钮上都可以设置文本、设置,各种按钮上都可以设置文本、设置
21、图标、注册事件监听器图标、注册事件监听器图标、注册事件监听器图标、注册事件监听器。目录目录4.按钮按钮JButtonJToggleButton JButton类定义了最普通的按钮形式,用来响应用户的某类定义了最普通的按钮形式,用来响应用户的某项操作请求。在顶层容器中,如果有多个按钮,某一刻只能有项操作请求。在顶层容器中,如果有多个按钮,某一刻只能有一个默认按钮。默认按钮将呈现高亮度显示外观,并且当顶层一个默认按钮。默认按钮将呈现高亮度显示外观,并且当顶层容器获得输入焦点时。按下容器获得输入焦点时。按下Enter键与用鼠标单击该按钮获得键与用鼠标单击该按钮获得的效果相同。的效果相同。JToggl
22、eButton(切换按钮)包含两个子类按钮,复选按(切换按钮)包含两个子类按钮,复选按钮(钮(JCheckBox)和单选按钮()和单选按钮(JRadioButton),它们的构),它们的构造方法相同。切换按有两种状态:选中和未选中,默认处于选造方法相同。切换按有两种状态:选中和未选中,默认处于选中状态。中状态。目录目录5.文本框l文本框是接受用户输入的一种组件,文本框是接受用户输入的一种组件,Swing将文本组件分为三大类:将文本组件分为三大类:文本字段文本字段纯文本纯文本区域区域带样式带样式文本区域文本区域包括类包括类JTextField和和JPasswordField,用于显示和编辑,用于
23、显示和编辑较短的、不带格式的一行文本。其中,类较短的、不带格式的一行文本。其中,类JPasswordField是类是类JTextField的子类,用于输入口令的子类,用于输入口令。文本字段的使用基于动作事件(即主要监听动作类型的事文本字段的使用基于动作事件(即主要监听动作类型的事件件ActionEvent),与按钮等简单控件的用法类似。),与按钮等简单控件的用法类似。包括类包括类JTextArea,用于显示和编辑较长的、不带格式的,用于显示和编辑较长的、不带格式的多行文本,通常用于显示没有格式的帮助信息。纯文本区多行文本,通常用于显示没有格式的帮助信息。纯文本区域的使用基于文档事件(即主要监听
24、文档类型的事件域的使用基于文档事件(即主要监听文档类型的事件DocumentEvent),程序通常使用文档事件监听器监听),程序通常使用文档事件监听器监听用户对纯文本区域的改变。用户对纯文本区域的改变。包括类包括类JEditorPane和和JTextPane,可用于显示和编辑复,可用于显示和编辑复杂的、带样式的文本。杂的、带样式的文本。JEditorPane类支持纯文本、类支持纯文本、HTML和和RTF的文本编辑;的文本编辑;JTextPane类进一步扩展了类进一步扩展了JEditorPane类的功能,允许文本中嵌人图像或其他组件。类的功能,允许文本中嵌人图像或其他组件。目录目录5.文本框 J
25、TextFieldJTextField类是一种经常使用的组件,它主要提供了类是一种经常使用的组件,它主要提供了类是一种经常使用的组件,它主要提供了类是一种经常使用的组件,它主要提供了下列几种构造方法:下列几种构造方法:下列几种构造方法:下列几种构造方法:JTextField()JTextField():无参数的构造方法,创建一个初始为:无参数的构造方法,创建一个初始为:无参数的构造方法,创建一个初始为:无参数的构造方法,创建一个初始为空、可显示字符列数为空、可显示字符列数为空、可显示字符列数为空、可显示字符列数为0 0的文本框对象。的文本框对象。的文本框对象。的文本框对象。JTextField
26、(String text)JTextField(String text):创建一个初始内容为:创建一个初始内容为:创建一个初始内容为:创建一个初始内容为texttext的文的文的文的文本框对象。本框对象。本框对象。本框对象。JTextField(String text,int col)JTextField(String text,int col):创建一个初始内容:创建一个初始内容:创建一个初始内容:创建一个初始内容为为为为texttext、可显示字符列数为、可显示字符列数为、可显示字符列数为、可显示字符列数为colcol的文本框对象。的文本框对象。的文本框对象。的文本框对象。JTextFie
27、ld(int col)JTextField(int col):创建一个初始内容为空、可显示:创建一个初始内容为空、可显示:创建一个初始内容为空、可显示:创建一个初始内容为空、可显示字符列数为字符列数为字符列数为字符列数为colcol的文本框对象。的文本框对象。的文本框对象。的文本框对象。目录目录8.2.4 布局管理FlowLayout布局管理器布局管理器 FlowLayout定义在定义在java.awt包中,包中,是是JPanel容器的默认布局管理器,它容器的默认布局管理器,它按照从上到下、从左到右(或从右向按照从上到下、从左到右(或从右向左)的规则将添加到容器中的组件依左)的规则将添加到容器
28、中的组件依次排序,如果一行放满后就另起一个次排序,如果一行放满后就另起一个新行。另外,在创建新行。另外,在创建FlowLayout的队的队形时可以指定一行中组件的对齐方式。形时可以指定一行中组件的对齐方式。默认为居中,还可以指定每个组件之默认为居中,还可以指定每个组件之间的水平和垂直方向的间距大小,默间的水平和垂直方向的间距大小,默认值为认值为5个像素。这种布局管理器并不个像素。这种布局管理器并不调整每个组件的大小,而是永远保持调整每个组件的大小,而是永远保持每个组件的最佳尺寸,剩余空间用空每个组件的最佳尺寸,剩余空间用空格补填。格补填。目录目录8.2.4 布局管理BorderLayout布局
29、管理器布局管理器 BorderLayout是是JFrame和和JDialog两种容器的默认布局管理器,两种容器的默认布局管理器,它将容器分为它将容器分为5个部分,分别命名为个部分,分别命名为North、South、West、East和和Center。在使用这种布局管理器管理。在使用这种布局管理器管理组件的排列时,需要为组件指明放的组件的排列时,需要为组件指明放的具体位置,默认位置为中间位置。如具体位置,默认位置为中间位置。如果将组件位置放在果将组件位置放在North或或South,组,组件的宽度将延长至与容器一样宽,而件的宽度将延长至与容器一样宽,而高度不变。如果将组件放在高度不变。如果将组件
30、放在West或或East,组件的高度将延长至容器的高,组件的高度将延长至容器的高度减去度减去North和和South之后的高度,而之后的高度,而宽度不变。宽度不变。目录目录8.2.4 布局管理GridLayout布局管理器布局管理器 BorderLayout是是JFrame和和JDialog两种容器的默认布局管理器,两种容器的默认布局管理器,它将容器分为它将容器分为5个部分,分别命名为个部分,分别命名为North、South、West、East和和Center。在使用这种布局管理器管。在使用这种布局管理器管理组件的排列时,需要为组件指明放理组件的排列时,需要为组件指明放的具体位置,默认位置为中
31、间位置。的具体位置,默认位置为中间位置。如果将组件位置放在如果将组件位置放在North或或South,组件的宽度将延长至与容器一样宽,组件的宽度将延长至与容器一样宽,而高度不变。如果将组件放在而高度不变。如果将组件放在West或或East,组件的高度将延长至容器,组件的高度将延长至容器的高度减去的高度减去North和和South之后的高之后的高度,而宽度不变。度,而宽度不变。目录目录8.2.5 事件事件的的类型类型和处理方法和处理方法低级事件低级事件语义事件语义事件由窗口系统发生的事由窗口系统发生的事情或者底层输入而产情或者底层输入而产生的事件,主要包括生的事件,主要包括组件事件、大小可见组件
32、事件、大小可见性的变化)、容器事性的变化)、容器事件件、焦点事件焦点事件、窗口窗口事件事件、鼠标事件鼠标事件、键键盘事件等。盘事件等。低级事件以外的具有丰低级事件以外的具有丰富含义的与组件有关富含义的与组件有关的事件,如单击按钮、的事件,如单击按钮、拖动滚动条等。这些拖动滚动条等。这些事件源于图形用户界事件源于图形用户界面,其含义由程序设面,其含义由程序设计员赋予。计员赋予。事事件件类类型型目录目录1.低级事件l焦点事件、鼠标事件、键盘事件和窗口事件都属于低级事件,弄清它们的处理方式对于编写正确的程序至关重要,表8-1列出了低级事件的事件类名和事件描述。事件类名事件类名事件描述事件描述Focu
33、sEvent在组件获得焦点或失去焦点时产生的事件在组件获得焦点或失去焦点时产生的事件MouseEvent用户对鼠标操作所产生的事件用户对鼠标操作所产生的事件KeyEvent用户对键盘操作所产生的事件用户对键盘操作所产生的事件WindowEvent用户对窗口操作所产生的事件用户对窗口操作所产生的事件目录目录1.低级事件目录目录2.语义事件l语义事件是与组件有关的事件。下表列出了一部分描述语义事件的类,它们都是AWTEvent的子类,位于java.event包中。事件类名事件描述ActionEvent激活组件事件ItemEvent选项事件ComponentEvent组件事件ContainerEve
34、nt窗口事件TextEvent文本框事件目录目录2.语义事件目录目录3.键盘事件的处理键盘事件的处理 键盘事件属于低级事件,这种类型的事件常伴随语义键盘事件属于低级事件,这种类型的事件常伴随语义事件的发生而发生。在这个情况下,是按照低级事件处理事件的发生而发生。在这个情况下,是按照低级事件处理还是按照语义事件处理,需要根据用户的需求做出决策。还是按照语义事件处理,需要根据用户的需求做出决策。但语义事件的优先级往往高于低级事件。但语义事件的优先级往往高于低级事件。键盘操作可以被分成键盘操作可以被分成3个类别,它们用不同的个类别,它们用不同的ID标识,标识,即当发生键盘事件时,需要给出事件的标识即
35、当发生键盘事件时,需要给出事件的标识KEY_EVENT_MASK及对应的事件及对应的事件ID。这三类事件的。这三类事件的ID及事件描述如下:及事件描述如下:KEY_PRESSED:当按下键盘中的某个键时发生该:当按下键盘中的某个键时发生该事件。事件。KEY_RELEASED:当释放按键时发生该事件。:当释放按键时发生该事件。KEY_TYPED:当按下键盘中的字符键(非系统键):当按下键盘中的字符键(非系统键)时发生该事件。时发生该事件。目录目录4.鼠标事件的处理鼠标事件的处理 鼠标事件由鼠标事件由MouseEvent类描述。在这个类中,提供了类描述。在这个类中,提供了下面几个可以获得鼠标信息的
36、成员方法:下面几个可以获得鼠标信息的成员方法:int getX()和和int getY():返回发生鼠标事件时光标所:返回发生鼠标事件时光标所处的坐标位置。处的坐标位置。Point getPoint():以:以Point类型的形式返回发生鼠标类型的形式返回发生鼠标事件时光标所处的位置。事件时光标所处的位置。int getClickCount():返回单击鼠标的次数。:返回单击鼠标的次数。目录目录4.鼠标事件的处理鼠标事件的处理 与窗口事件和键盘事件不同,鼠标事件被划分成两个类别:一与窗口事件和键盘事件不同,鼠标事件被划分成两个类别:一类被称为鼠标事件,用类被称为鼠标事件,用MOUSE_EVEN
37、T_MASK标识;另一类被标识;另一类被称为鼠标移动事件,用称为鼠标移动事件,用MOUSE_MOTION_EVEN-T_MASK标识。标识。它们分别对应它们分别对应MouseListener接口和接口和MouseMotionListener接口。接口。下面列出这两个类别的鼠标事件所包含的具体事件下面列出这两个类别的鼠标事件所包含的具体事件ID及描述:及描述:MOUSE_CLICKED:当单击鼠标时发生该事件。:当单击鼠标时发生该事件。MOUSE_PRESSED:当按下鼠标时发生该事件。:当按下鼠标时发生该事件。MOUSE_ENTERED:当鼠标进入组件显示区域时发生该:当鼠标进入组件显示区域时
38、发生该事件。事件。MOUSE_EXITED:当鼠标退出组件显示区域时发生该事:当鼠标退出组件显示区域时发生该事件。件。MOUSE_RELEASED:当释放鼠标时发生该事件。:当释放鼠标时发生该事件。MOUSE_MOVE:当移动鼠标时发生该事件。:当移动鼠标时发生该事件。MOUSE_DRAGGED:当拖动鼠标时发生该事件。:当拖动鼠标时发生该事件。目录目录8.2.6 事件适配器事件适配器接口名称接口名称适配器名称适配器名称接口名称接口名称适配器名称适配器名称ComponentListenerComponentAdapterMouseListenerMouseAdapterContainerLis
39、tenerContainerAdapterMouseMotionListenerMouseMotionAdapterFocusListenerFocusAdapterMouseInputListenerMouseInputAdapterKeyListenerKeyAdapterWindowListenerWindowAdapter 为了编程方便,为了编程方便,Java为一些声明了多个方法的为一些声明了多个方法的Listener接口提供了相对应的适配器(接口提供了相对应的适配器(Adapter)类,如)类,如下下表所示。表所示。目录目录3.3 案例实施案例实施3.3.1 3.3.1 编写源代码编
40、写源代码编写源代码编写源代码3.3.2 3.3.2 编译源代码编译源代码编译源代码编译源代码3.3.3 3.3.3 运行程序运行程序运行程序运行程序目录目录8.4 训练与实战训练与实战训练内内容容编写一个应用程序,实现简单的计算器功能。训练过程程 1.编写源代码编写源代码 编写CalculatorExample.java文件。2.编译和运行程序编译和运行程序 编译、运行程序后,会在屏幕上编译、运行程序后,会在屏幕上看到如图所示的计算器。看到如图所示的计算器。目录目录8.4 训练与实战训练与实战总结与与体体会会l在在构构建建GUI时时,主主要要完完成成的的事事情情是是根根据据设设计计阶阶段段对对
41、主主画画面面的的设设计计,创创建建各各种种组组件件,使使用用合合适适的的布布局局管管理理器器直直接接或或间间接接地地将将其其添添加加到到顶顶层层容容器器的的内内容容窗窗格格中中。在在构构建建组组件件时时,可可为为组组件件注注册册合合适适的的事事件件监监听听器器,并并定定义义类类实实现现相相应应的的事事件件监监听听器器接接口口,提提供供合合适适的的事事件件处处理理程序,完成应用程序的功能。程序,完成应用程序的功能。目录目录8.5 实际工作中常见问题解析实际工作中常见问题解析问题问题Java平台提供的布局管平台提供的布局管理器已经可以满足大多理器已经可以满足大多数情况下的需要,但是数情况下的需要,
42、但是在特殊场合,如果不想在特殊场合,如果不想使用布局管理器,那么使用布局管理器,那么应该如何布局组件?应该如何布局组件?问题分析与解决问题分析与解决 如果不想使用布局管理器,那么如果不想使用布局管理器,那么可以通过数值指定组件的位置和大可以通过数值指定组件的位置和大小,这时首先需要调用容器的小,这时首先需要调用容器的setLayout(null)方法将布局管理器方法将布局管理器设置为空,然后调用组件的设置为空,然后调用组件的setBounds()方法设置组件的位置和大小,方法设置组件的位置和大小,setBounds()方法的格式为:方法的格式为:setBounds(int x,int y,int width,int height)前两个前两个int型参数设置组件的位置,型参数设置组件的位置,后两个后两个int型参数设置组件的宽度和型参数设置组件的宽度和高度。高度。目录目录