关闭

关闭

封号提示

内容

首页 网络程序设计(java)第08章 Swing图形用户界面程序设计new.ppt

网络程序设计(java)第08章 Swing图形用户界面程序设计new.ppt

网络程序设计(java)第08章 Swing图形用户界面程序设…

上传者: 150*****951@sina.cn 2012-03-09 评分 3 0 46 6 211 暂无简介 简介 举报

简介:本文档为《网络程序设计(java)第08章 Swing图形用户界面程序设计newppt》,可适用于IT/计算机领域,主题内容包含网络程序设计NetworkProgramming第八章Swing图形用户界面**网络程序设计NetworkProgramming第八章Swing图形符等。

网络程序设计NetworkProgramming第八章Swing图形用户界面**网络程序设计NetworkProgramming第八章Swing图形用户界面赵建立山东科技大学信息科学与工程学院CollegeofInformationScienceandEngineering,ShandongUniversityofScienceandTechnologyzhaojianligmailcom简介**简介图形用户界面(GUI)数据的图形显示形式友好的交互方式简化计算机软件的学习过程GUI示例微软IPODIPHONEIPAD简介**简介乔布斯年大学辍学成立苹果公司年月上市苹果公司高层产生了名亿万富翁和名以上的百万富翁Lisa项目失败年经由董事会决议撤销经营大权年月回归苹果在乔布斯的改革之下“苹果”终于实现盈利。乔布斯刚上任时苹果公司的亏损高达亿美元一年后却奇迹般地盈利亿美元年月初苹果公司市值(约亿美元)超过埃克森美孚(约亿美元)成为全球第一大市值的上市公司也是全球第一大资讯科技公司。Swing整体介绍**Swing整体介绍早期版本的GUI组件所在的包:javaawt与平台相关性较强,功能较弱SwingGUI组件所在的包:javaxswingSwing组件的平台相关性较小(lightweight)Swing比AWT可以克服不同操作系统带来的图形界面的差别Swing图形用户界面可以定制指定的操作系统风格的界面两类图形用户界面之间在组件控制机制等方面存在一些冲突一般建议使用swing。JComponent**JComponent组件类的层次结构javalangObject|javaawtComponent|javaawtContainer|javaxswingJComponentJComponent大多数Swing组件类父类Swing组件**Swing组件组件和容器是Swing图形用户界面的组成部分:容器各种组件必须放在容器容器本身也是一种组件分类顶层容器(小应用程序、对话框和框架)一般容器(面板、滚动窗格、分裂窗格、选项卡窗格、工具条)其它容器组件基本控制组件(按钮、单选按钮、复选框、组合框、列表框)不可编辑的信息显示组件(标签、进度条)可编辑的信息显示组件(文本编辑区、文本区域)一些GUI组件**一些GUI组件标签(JLabel)文本框(JTextField)按钮(JButton)复选框(JCheckBox)组合框(JComboBox)文本(JTextArea)框架(JFrame)面板(JPanel)标签(JLabel)**标签(JLabel)标签为GUI提供文本(主要)或图像(也可以)信息对应类(JLabel)(JComponent的子类)可以显示:单行的只读的文本信息图像同时显示文本与图像信息程序一般不修改标签的内容示例**示例【例】JLableFramejava,在框架中添加标签的例程文本框(JTextField)**文本框(JTextField)文本框(JTextField)显示单行的文本信息JTextFieldextendsJTextComponent示例**示例【例】JTextjava,文本编辑框例程按钮(JButton)**按钮(JButton)当鼠标左键单击按钮组件时能触发特定的事件在Java中,广义的按钮包括:命令式按钮(JButton)复选框(JCheckBox)单选按钮(JRadioButton)按钮类的层次结构**按钮类的层次结构示例**示例【例】JButtonjava,命令式按钮、复选框和单选按钮例程组合框(JComboBox)**组合框(JComboBox)组合框(JComboBox)可以从下拉式的列表框中选取其中的列表项有时也称为下拉框(dropdownlist)类JComboBox中的方法getSelectedIndex()返回当前被选中的项setMaximumRowCount(n)设置最多显示列表项的项数滚动条(Scrollbar)会自动加上示例**示例【例】JLinesjava,组合框、列表框、文本区域和滚动窗格例程框架(JFrame)**框架(JFrame)Swing组件从功能分可以分成三种分别是顶层组件中间组件和基本组件。JFrame就是顶层组件简单的描述也就是可以独立显示的组件。而中间组件是可以充当载体但是不能独立显示的组件可以把基础组件放在其中但是还是要依托在顶层容器内才可以显示。基础组件则是实现人机交互的基本组件。类JFrame是javaawtFrame的子类javalangObject|javaawtComponent|javaawtContainer|javaawtWindow|javaawtFrame|javaxswingJFrame面板(JPanel)**面板(JPanel)一种中间容器在面板中添加组件然后再将面板添加到其他容器中。可以添加各种组件(包括面板组件)面板(JPanel)的大小由它所包含的组件决定当组件个数增加面板(JPanel)也会随之而增大示例**示例【例】JPaneljava,面板例程本章总体纲要**本章总体纲要基本GUI组件布局管理器事件处理模型菜单布局管理器**布局管理器用来控制组件在容器中的布局方式应当尽量利用已有的基本布局方式布局管理器处理组件布局的大部分细节给顶层容器设置布局管理器:先通过顶层容器getContentPane获取顶层容器的内容窗格再通过javaawtContainer的setLayout设置内容窗格的布局管理器给其他容器设置布局管理器:直接通过javaawtContainer的setLayout设置内容窗格的布局管理器。布局管理器**布局管理器FlowLayoutGridLayoutBorderLayoutCardLayout组合布局管理器FlowLayout**FlowLayout是一种最基本的布局管理器是javaawtApplet、javaawtPanel和javaxswingJPanel的默认布局方式在容器中从左到右依次放置GUI组件当组件排到容器一行的末尾时则从下一行开始接着排列组件每行组件的对齐方式可以是:左对齐、中间(默认对齐方式)和右对齐类FlowLayout对齐方法**类FlowLayout对齐方法setAlignment(positionCONSTANT)FlowLayoutLEFTFlowLayoutCENTERFlowLayoutRIGHTGridLayout**GridLayout将容器按行和列等分成棋盘状然后组件从第一行按照从左到右依次被放到这些矩形区域中一行放满了继续从下一行开开始。PublicGridLayout(introws,intcols)示例**示例【例】JGridLayoutjava,网格布局管理器例程BorderLayout**BorderLayout是容器JFrame和JApplet的默认布局方式将容器分成五个区域NORTH(顶部)SOUTH(底部)WEST(左侧)EAST(右侧)CENTER(中间)每个区域最多只能个组件类BorderLayout方法**类BorderLayout方法构造方法:BorderLayout(hGap,vGap)hGap–区域间的水平间隙vGap区域间的竖直间隙上面两个数据的默认值是添加组件myContaineradd(component,position)component–需要加入到容器中的组件positions–(BorderLayoutNORTH)NORTH,SOUTH,EAST,WEST,CENTER示例**示例【例】JBorderjava,边界布局管理器例程CardLayout**CardLayoutCardLayout的布局方式有点象“扑克牌”一个组件压在另一个组件的上面所以每次一般只能看到一个组件示例**示例【例】JCardLayoutjava,卡片布局管理器例程BoxLayout**BoxLayoutBoxLayout允许多个组件在容器中沿水平方向或竖直方向排列不换行、换列。示例**示例【例】JCardLayoutjava,卡片布局管理器例程布局管理器嵌套**布局管理器嵌套实际上是容器的嵌套被嵌套的容器可以具有不同的布局管理器在嵌套的布局管理器中JPanel通常起到了“桥”的作用示例**示例【例】JFlowBoxLayoutjava,组合布局方式例程Swing中的类在设计时采用了模型、视图、控制器(ModelViewControllerMVC)模式作为每个组件的基本设计。MVC模式是GUI程序设计中比较常见的一种设计方法因此理解MVC模式不仅有利于学习Swing更有助于设计GUI程序。MVC模式将GUI组件拆分为模型、视图、控制器三个基本要素每一个要素都对组件的表现起着至关重要的作用。MVCMVC模型(Model)包含每个组件的数据状态不同类型的组件有不同的模型。什么是组件的数据状态呢?例如滚动条组件(JScrollBar)的数据状态就包含滚动条的当前位置、最大值、最小值以及滚动条的宽度等。这些数据信息就是滚动条组件的模型。视图(View)是组件在屏幕上的表现形式。由于Java是跨平台的语言同一个组件在不同的平台上的显示是不相同的在不同的外观风格下也是不相同的。为了让Java的GUI程序也应该做到“Writeoncerunanywhere”Swing组件依据组件的模型和当前所处的显示环境进行组件绘制。控制器(Controller)控制组件如何与事件进行交互。事件的形式有多种例如鼠标单击、获得或者失去焦点、键盘点击等。当这些事件发生时控制器根据事件的类型决定组件如何响应图MVC模式本章总体纲要**本章总体纲要基本GUI组件布局管理器事件处理模型菜单事件处理模型**事件处理模型事件:对鼠标、键盘和其他输入设备的各种操作一般称为事件。GUI是由事件(event)驱动的当用户与GUI交互可以产生事件(events)一些常见的交互方式移动鼠标用鼠标点击按钮在文本框中输入数据关闭窗口等事件处理机制**事件处理机制事件处理模型是以对象形式封装的主要涉及三个要素:事件源(Aneventsource)事件对象(Aneventobject)事件监听器(eventlistener(s))事件处理机制**事件处理机制事件源接受各种事件的对象可供用户进行交互的GUI组件事件对象封装了包含所发生的各种事件的有效信息信息包括:事件源的引用、以及事件监听器在处理事件时所需要的其它各种信息事件信息被包含在javaawtevent或javaswingevent包中类名通常以单词Event结尾事件监听器接受事件对象并处理事件对象首先需要在事件源中登记事件监听器。也包含在javaawtevent或javaswingevent包中类名通常以单词Listener结尾事件处理机制事件处理步骤程序加入javaawtevent包:importjavaawtevent给所需的事件源对象注册事件监听器:事件源对象addXXXListener(XXXListener)实现相应的方法。如果某个监听器接口包含多个方法则需要实现所有的方法事件处理机制事件处理机制事件处理方式()利用监听器接口实现事件处理()利用监听器类实现事件处理()利用内部类实现事件处理()利用匿名内部类实现事件处理事件处理机制事件处理机制()利用监听器接口实现事件处理同一个类中实现一个事件的接口。对该接口的方法进行定义实现特定的功能。一般形式如下:publicclass事件发生类名implements事件监听器接口{……public事件发生类名(){…组件addXXXListener(this)注册到监听器对象this表示当前对象。…}publicvoid监听器接口说明的方法(){……}……publicvoid监听器接口说明的方法n(){……}}事件处理机制事件处理机制()利用监听器类实现事件处理就是通过扩展一个监听器接口定义监听器类然后对要求发生动作的组件再注册到这个监听器类的对象中。这种方法的一般形式如下:class自定义监听类名extends事件适配器(或implements事件监听器){定义监听器类……publicvoid监听器接口说明的方法(){……}……publicvoid监听器接口说明的方法n(){……}}publicclass事件发生类名{定义事件发生的类……public自定义监听类名(){…组件addXXXListener(new自定义监听类名())注册组件到监听器对象…}…}事件处理机制事件处理机制()利用内部类实现事件处理这种方法就是将独立的监听器类定义成事件发生类的内部类。形式如下:publicclass事件发生的类名{定义事件发生的类……public事件发生的类名(){…组件addXXXListener(new自定义监听类名())注册组件到监听器对象…}…class自定义监听类名extends事件适配器(或implements事件监听器){定义内部监听器类……publicvoid监听器接口说明的方法(){……}……publicvoid监听器接口说明的方法n(){……}}结束内部类}事件处理机制事件处理机制()利用匿名内部类实现事件处理格式:组件对象addXXXListener(new事件监听器(){定义匿名内部类publicvoid监听器接口说明的方法(){……}……publicvoid监听器接口说明的方法n(){……}})结束匿名类定义事件处理机制事件处理机制常见的事件处理类型Java语言中提供事件处理的包主要有javaawtevent和javaxswingevent包。其中javaawtevent包提供了对awt包和swing包常见组件的支持与事件处理相关常见的的事件类和事件监听器接口见表。至于swing包提供了对高级事件处理。事件处理机制事件处理机制表常见的事件类和事件监听接口事件处理机制常用的事件处理常用的事件处理动作事件处理动作事件处理是最简单和最常用的事件处理。当用户点击按钮或在文本框中按回车键或选择菜单项或使用列表等组件时都可以采用动作事件来处理这些组件引发的动作。动作事件处理涉及到接口ActionListener与动作事件类ActionEvent。通过接口ActionListener可以实现对组件发生动作事件ActionEvent对象的监听与处理。ActionListener的主要方法常用的事件处理常用的事件处理鼠标事件处理鼠标是一种最常见的输入方式。用户可以用鼠标绘制图形利用鼠标实现特殊的控制例如游戏操作的控制等功能。Java语言中主要提供了三种不同类型的鼠标事件:鼠标键事件鼠标移动事件鼠标轮滚动事件鼠标键事件多用于鼠标的单击处理鼠标移动事件是用于鼠标移动的处理至于鼠标轮滚动事件是从JDK后引入的鼠标事件用于鼠标轮的动作处理。这三种类型的鼠标事件一般是以容器组件作为事件源它们各有自己的监听器。常用的事件处理常用的事件处理鼠标键事件鼠标键事件处理涉及到监听器接口MouseListener和鼠标事件MouseEvent。对于这种事件处理的具体步骤是:组件通过方法addMouseListener()到注册MouseListener中。允许监听器对象在程序运行过程中监听组件是否有鼠标键事件MouseEvent对象发生。实现MouseListener接口的所有方法提供事件发生的具体处理办法。常用的事件处理常用的事件处理MouseEvent的主要方法MouseListener的方法常用的事件处理常用的事件处理鼠标移动事件事件类MouseEvent还对应另一个监听器接口MouseMotionListener。该接口可以实现鼠标的两种运动的处理:鼠标移动处理和鼠标拖动的处理。实现鼠标移动事件处理的一般步骤如下:组件通过方法addMouseMotionListener()到注册MouseMotionListener中。允许MousMotionListener监听器对象在程序运行过程中监听组件是否有鼠标键事件MouseEvent对象发生。实现MouseMotionListener接口的所有方法提供事件发生的具体处理办法。常用的事件处理常用的事件处理鼠标轮滚动事件鼠标轮滚动事件可以处理鼠标中间的鼠标轮的动作。这种事件的实现依赖于事件类MouseWheelEvent和接口MouseWheelListener。实现鼠标轮滚动事件的具体步骤如下:组件通过方法addMouseWheelListener()到注册MouseWheelListener中。允许监听器在程序运行过程中监听组件是否有鼠标轮事件MouseWheelEvent对象的发生实现MouseWheelListener接口的所有方法提供事件发生的具体处理办法。对于类MouseWheelEvent是MouseEvent的直接子类具有MouseEvent的特点。同时它也具有自身的特征。常用的事件处理常用的事件处理MouseWheelEvent的常见方法MouseWheelListener的方法常用的事件处理常用的事件处理窗口事件处理窗口事件是一种低级的事件处理它可以处理窗口的打开、关闭、最小化、最大化、窗口的激活、无效、恢复、获得焦点等事件。具体的来说窗口事件处理有三种类型:窗口基本事件处理、窗口状态事件处理以及窗口焦点事件处理。为了实现这些窗口事件处理可以通过窗口事件类WindowEvent和监听器接口WindowListener或WindowStateListener或WindowFocusListener来实现。常用的事件处理常用的事件处理实现窗口处理的具体的步骤为:组件通过方法addWindowListener()到注册WindowListener中利用方法addWindowStateListener()注册到WindowStateListener中以及利用方法addWindowFocusListener()注册到WindowFocusListener中。允许上述提及的三种监听器在程序运行过程中监听组件是否有窗口事件WindowEvent对象发生。实现WindowListener、WindowStateListener和WindowFocusListener接口的所有方法提供事件发生的具体处理办法。常用的事件处理常用的事件处理WindowEvent的主要方法WindowStateListener的方法WindowFocusListener的方法常用的事件处理常用的事件处理WindowListener的方法常用的事件处理常用的事件处理选项事件处理Swing包中的许多组件如JCheckBox、JComboBox、JCheckBoxMenuItem提供了“选中”和“未选”两种状态。希望对操作中产生的这两种状态能进行相应地处理。这就属于选项事件处理。与选项事件处理相关的有事件类ItemEvent和监听器接口ItemListener。具体实现选项事件的过程有:组件通过方法addItemListener()到注册ItemListener对象中。允许监听器在程序运行过程中监听组件是否有鼠标键事件ItemEvent对象发生。实现ItemListener接口的所有方法提供事件发生的具体处理办法。常用的事件处理常用的事件处理ItemEvent的常用方法ItemListener的方法常用的事件处理常用的事件处理焦点事件处理焦点事件是由于键盘或鼠标或程序本身状态的变化导致一些低级组件如JButton获得或失去键盘的焦点而产生。对于焦点事件有两种类型:持久性和暂时性。持久性的焦点事件是指焦点从一个组件到另外一个组件而暂时性的焦点事件是指由于操作的原因组件暂时失去焦点但是随着操作结束组件又会恢复焦点。常用的事件处理常用的事件处理焦点事件处理涉及到事件类FocusEvent和监听器接口FocusListener。利用它们可以实现焦点事件的具体步骤如下:组件通过方法addFocusListener()到注册FocusListener中。允许监听器在程序运行过程中监听组件是否有鼠标键事件FocusEvent对象发生。实现FocusListener接口的所有方法提供事件发生的具体处理办法。常用的事件处理常用的事件处理FocusEvent的常见方法FocusListener的方法常用的事件处理常用的事件处理菜单事件处理菜单是应用软件经常使用的界面组件。用户可以选择菜单项来实现某种功能。在具体对菜单处理可以通过菜单项的类型不同而展开。如果菜单项是属于JMenuItem对象对这种菜单项一般可以通过点击动作来激活动作事件所以可以用动作事件处理的方式来实现。如果菜单项是JCheckBoxMenuItem对象则可以采用选项事件处理的方式进行处理。要是菜单项是JRadioButtonMenuItem对象可以根据具体要求可以选择用动作事件或选项事件处理。处理鼠标事件**处理鼠标事件鼠标事件能够被GUI组件捕获到基本事件监听器的接口MouseListenerMouseMotionListenerMouseWheelListener示例**示例【例】JButtonjava,鼠标点击事件处理例程示例**示例【例】JButtonjava,鼠标点击事件处理例程修改为匿名类示例**示例【例】JDrawjava,鼠标画画例程事件适配器事件适配器实现事件处理时用户有时只定义监听器接口中对事件处理的部分方法对于其他并没有具体的定义。在这种情况下可以考虑使用事件适配器来处理事件。事件适配器就是一个可以兼容监听器接口的接口它可以提供兼容监听器接口的默认所有方法。事件适配器的一个最主要的应用就是可以简化监听器接口不必要的事件处理。比如MouseListener接口有个方法如果在具体编程的时候只需要其中的一个方法那么就可以定义一个事件适配器来实现这个特定的方法。另外它可以通过与其他类的组合设置一定的工作模式实现特定的功能。事件适配器**事件适配器事件适配器类(Adapter)只实现接口所需要处理的方法通过覆盖对于接口中的其它方法:系统会提供默认的方法(方法体为空)事件适配器类与事件监听器接口的区别利用事件适配器类只需实现所需处理的方法利用事件监听器接口必须实现所有的方法事件适配器类与事件监听器接口的执行效率利用事件适配器类处理事件并不能提高执行效率事件适配器类与事件监听器接口**事件适配器类与事件监听器接口本章总体纲要**本章总体纲要基本GUI组件布局管理器事件处理模型菜单菜单**菜单菜单可以使GUI变得更为简洁树状菜单项实际上可以看做另一种形式的按钮菜单只能加入到具有成员方法(setJMenuBar)的类的实例对象中例如:JFrame和Japplet菜单术语**菜单术语菜单术语菜单栏(menubar)下拉式菜单(menu)菜单项(menuitem)与菜单相关的部分类:JMenuBarJMenuJMenuItemJCheckBoxMenuItem(extendsJMenuItem)JRadioButtonMenuItem(extendsJMenuItem)菜单术语菜单术语编写具有菜单(Menu)的程序**编写具有菜单(Menu)的程序创建菜单栏:(menubar)给容器设置菜单栏容器举例:JFrame、JAppletsetJMenuBar(myBar)创建菜单设置记忆符(Mnemonic)创建菜单项设置记忆符(Mnemonic)类似于按钮设置事件监听器进行事件处理编写具有菜单(Menu)的程序**编写具有菜单(Menu)的程序将菜单项加入到适当的菜单中myMenuadd(myItem)在菜单项间增加隔(separator)这不是必须的myMenuaddSeparator()如果需要子菜单则将子菜单加入到菜单中myMenuadd(mySubMenu)将菜单加入到菜单栏中myMenuBaradd(myMenu)记忆符(Mnemonic)**记忆符(Mnemonic)一种触发菜单、子菜单或菜单项便捷方式方法setMnemonicJMenufileMenu=newJMenu("File")fileMenusetMnemonic('F')在键盘上按下AltF来触发菜单、子菜单或菜单项示例**示例【例】JMenujava,常规菜单例程弹出式菜单(JPopupMenus)**弹出式菜单(JPopupMenus)弹出式菜单(JPopupMenus)通过按鼠标键而弹出的浮动式菜单示例**示例【例】JPopupMenujava,弹出式菜单例程

类似资料

编辑推荐

人教S版小学语文课本一年级上册.pdf

高考题库-立体几何.pdf

安全评价师基础知识.pdf

2012年西北工业大学理学院数学系数学综合考研复试试题.pdf

Words图解词根词源10000单词速记下.pdf

职业精品

精彩专题

上传我的资料

精选资料

热门资料排行换一换

  • 足球二级裁判试卷.doc

  • 工程售后服务体系.doc

  • 主力对倒.doc

  • 沧海一滴泪.doc

  • 白象似的群山写作手法分析.doc

  • 柳宗元人格的特点与缺失.doc

  • 酒店管理培训资料.doc

  • Icepak实例详解(中文).d…

  • 地下管线及其他地上地下设施的保护…

  • 资料评价:

    / 84
    所需积分:0 立即下载

    意见
    反馈

    返回
    顶部