java程序设计 教学 教案 课件 06_第1页
java程序设计 教学 教案 课件 06_第2页
java程序设计 教学 教案 课件 06_第3页
java程序设计 教学 教案 课件 06_第4页
java程序设计 教学 教案 课件 06_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

第六章常用组件及事件处理,第六章常用组件及事件处理,选择框下拉列表滚动列表Component类的常用方法窗口事件鼠标事件键盘事件JavaSwing简介发布应用程序,Java窗口布局文本框组件按钮组件菜单项文本区组件标签画布面板,常用组件及事件处理简介,图形用户界面(GUI:GraphicsUserInterface)抽象工具包(AWT:AbstractWindowToolkit)容器类(Container)组件类(Component),常用组件及事件处理简介,Component类或者间接子类创建的对象,叫组件。ButtonScrollbarCanvasListCheckboxTextFieldTextAreaLabel以上类是包java.awt中的类,并且是包中Component类的子类。容器也是组件。,常用组件及事件处理简介,Container类或者间接子类创建的对象,叫容器向容器中添加组件,Component类提供一public方法:add()容器调用remove(ComponentC)、removeAll()方法可以移掉容器中的参数C的组件、全部组件。当容器中添加或者移掉新的组件时,调用validate()方法来刷新。容器也是组件,可以嵌套。,类的层次关系,6.1Java窗口,窗口Frame类是一个容器,可以向窗口添加组件。窗口默认显示到屏幕。不允许将一个窗口添加到另一个容器中。1.Frame常用方法:Frame()构造方法可以创建一个无标题的窗口,窗口的默认布局是BorderLayout布局。Frame(Strings)构造方法可以创建一个标题为s的窗口,窗口的默认布局是BorderLayout布局。,6.1Java窗口,PublicvoidsetSize(intwidth,intheight)设置窗口大小,默认位置(0,0)。PublicvoidsetBounds(inta,intb,width,intheight)设置窗口大小,位置(a,b)PublicvoidsetVisible(booleanb)设置窗口可见性,窗口默认是不可见的PublicvoidsetResizable(booleanb)设置窗口可调性,默认是可调的Publicvoiddispose()撤消当前窗口,并释放所使用的资源。,6.1Java窗口,2.菜单条、菜单、菜单项MenuBar菜单条:java.awt包中的Menubar类是负责创建菜单条。Frame类将菜单条放入窗口的方法:setMenuBar(MenuBarbar)将菜单条添加到窗口的顶端,一个窗口只能添加一个菜单条;Menu菜单:Java.awt包中的Menu类是负责创建菜单的,Menu类的主要方法:Menu():建立一个空标题的菜单Menu(Strings):建立一个标题为S的菜单publicvoidadd(MenuItemitem):向菜单中添加由参数item指定的菜单选项对象。publicvoidadd(Strings):向菜单中添加指定的选项publicMenuItemgetItem(intn):达到指定索引处的菜单选项publicintgetItemCount():得到菜单选项的数目,6.1Java窗口,2.菜单条、菜单、菜单项Menultem菜单项:Java.awt包中的Menultem是Menu的父类,该类负责创建菜单项,主要方法:MenuItem():构造无标题菜单项MenuItem(Strings):构造有标题菜单项publicvoidsetEnabled(booleanb):设置当前菜单项是否可被选择publicStringgetLabel():得到菜单选项的名字,WindowFrameDialog,6.2布局,容器中的组件放置需要布局。Java.awt包中的布局类:FlowLayout、BorderLayout、CardLayout、GridLayoutJava.swing.border包中的布局类:BoxLayout设置布局:采用方法setLayout(布局对象),6.2布局,1.FlowLayoutFlowLayout是Panel型容器的默认布局。构造方法:FlowLayout()创建一个布局对象FlowLayoutflownewFlowLayout();容器使用布局对象con.setLayout(flow);Container类提供的Add()方法将组件添加到容器中默认水平和垂直间隙是5个象素FlowLayout布局对象调用:setAlignment(intaligin)重新设置布局的对齐方式,aligin取:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHTFlowLayout布局对象调用:setHgap(inthgap)、setVgap(intvgap)重新设置垂直和水平间隙。,6.2布局,例子2,使用FlowLayout布局放置10个组件,6.2布局,2.borderLayout布局borderLayout是window型容器的默认布局。Frame、Dialog都是window的子类,默认布局是borderLayout布局。容器空间简单划分为:东西南北中五个区域。静态常量为:CENTERNORTHSOUTHWESTEAST。每个区域只放一个组件。一个容器中多于五个组件要使用容器嵌套。使用容器的add()方法将组件添加到容器中。,6.2布局,例子3:采用BorderLayout布局,6.2布局,3.CardLayout布局CardLayout的容器同时可显示多个组件,但每次只显示一个出来。被显示出来的组件将占据所有的容器空间。使用CardLayout的一般步骤:创建:CardLayoutcard=newCardLayout();容器设置布局setLayput():con.setLayout(card);调用add()方法将组件b加入容器:add(Strings,Componentb);显示用show()方法:mycard.show(con,s);按顺序显示:card.first(con);card.last(con);card.next(con);card.previous(con);,6.2布局,4.GridLayout布局GridLayout:组件位于行列组成的网格区域中。组件大小跟每一网格大小相同。使用步骤:创建布局对象,构造方法GirdLayout(intm,intn),指定划分mXn个网格,例:GridLayoutgrid=newGridLayout(10,8);最多容纳mXn个容器使用GridLayout布局的容器调用方法add将组件加入容器要求组件大小不一时用嵌套。嵌套的容器可使用:FlowLayout、CardLayout、GridLayout、BorderLayout。,6.2布局,5.BoxLayout布局BoxLayout:盒式容器。在java.swing.border包中。Java.swing包提供了Box类,该类创建的容器成为盒式容器。盒式容器布局不可以改变。创建盒式布局对象,使用构造方法:BoxLayout(Containercon,intaxis);参数axis值:BoxLayout.X_AXIS、BoxLayout.Y_AXIS确定盒式布局采用行排列还是列排列行式盒式容器布局只允许一行。列式盒式容器布局只允许一列。静态Box创建行型盒式布局的方法:createHorizontalBox()、创建列型盒式布局的方法createVerticalBox()控制盒式布局容器中组件的距离,静态水平支撑(距离)调用:createHorizontalStrut(intwidth)静态垂直支撑(距离)调用:createVerticalStrut(intheight),6.2布局,例子4:,6.2布局,6.null布局null布局:空布局,空布局容器可以准确定位组件在容器的位置和大小。设置:p.setLayout(null);p为容器向空布局中加入组件调用add()方法:add(c);设置组件在容器中的位置和本身大小:setBounds(inta,intb,intwidth,intheight),6.3文本框组件,Java.awt包中的:TextField类1.TextField类的主要方法:TextField():创建文本框,长度为一个字符,可输入若干字符TextField(intx):创建文本框,长度为x个字符,可输入若干字符TextField(Strings):创建文本框,初始字符串为s,可输入若干字符。PublicvoidsetText(Strings):文本框调用该方法设置文本框中的文本为参数s指定的文本,文本框中先前的文本将被清除。PublicStringgetText():文本框调用该方法获取文本框的文本PublicvoidsetEchoChar(charc):设置文本框的回显字符。PublicvoidsetEditable(booleanb):设置文本框的可编辑性PublicvoidaddActionListener(ActionListener):向文本框增加动作监视器PublicvoidremoveActionListener(ActionListener):移去文本框上的动作监视器,6.3文本框组件,例子5:两个文本框,6.3文本框组件,2.文本框上的ActionEvent事件文本框上的ActionEvent事件:回车、单击按钮、下拉列表中选择事件、确定、取消等。三个概念:事件源:生成事件的对象,例如文本框,按钮,下拉式列表等等。监视器:事件源调用方法将某个对象作为监视器,如:addActionListener(监视器)。监视器是一个对象。处理事件的接口:监视器对象处理事件前,创建监视器的类要先声明实现相应的接口,在类体中给出该接口中所有方法的方法体。,6.3文本框组件,Java.awt.event包中提供事件类的接口。文本框的接口:ActionListener,接口中的方法只有一个方法:publicvoidactionPerformed(ActionEvente)ActionEvent类中的方法获得发生ActionEvent事件的事件源对象方法:publicObjectgetSource()在事件源上创建监视器:sourceObject.addXXXListener(监视器);创建监视器前声明接口:classAimplementsXXXListener,6.3文本框组件,例子6:,6.4按钮组件,Java.awt包中Button类用来建立按纽。1.Button类常用方法:Button()使用这个构造方法创建按钮,按钮没有名字Button(Strings):使用此构造方法创建按钮,按钮上的名称是SPublicvoidsetLabel(Strings):按钮对象调用该方法可以设置按钮上的名称PublicStringgetLabel():按钮对象调用该方法获取按钮上的名称PublicvoidaddActionListener(ActionListener):按钮对象调用该方法可以向按钮增加动作监视器PublicvoidremoveActionListener(ActionListener):按钮对象调用此方法移除按钮上的动作监视器,6.4按钮组件,2.按纽上的ActionEvent事件按纽上的ActionEvent事件:单击按钮。Java.awt.envent包中的ActionEven类自动创建了一个事件。,6.4按钮组件,例子7:,6.5菜单项,单击某个菜单项可以发生ActionEvent事件例子8:通过处理菜单项事件结束程序,6.6文本区组件,Java.awt包中TextArea类用来建立文本区,用以输入多行文本。1.TextArea类常用方法:TextArea():使用此构造方法创建文本区对象,文本区的列数和行数取默认值.文本区上有水平和垂直滚动条.TextArea(Strings):使用此构造方法创建文本区对象,文本区的初始字符串为s.文本区有水平和垂直滚动条.TextArea(intx,inty):使用这个构造方法创建文本区对象,文本框行数为y,列数为x.文本区有水平和垂直滚动条.PublicvoidsetText(Strings):文本区对象调用该方法可以将文本区中的文本设置为参数s指定的文本,文本区中先前的文本将将清楚.PublicStringgetText():文本区对象调用该方法可以获取文本区中的文本.Publicvoidinsert(Strings,intx):文本区对象调用该方法可以在指定位置x处,插入指定文本s.x指距离文本区开始处字符的个数。,6.6文本区组件,publicvoidreplaceRange(Strings,intstart,intend)文本区对象调用该方法可以用给定的新文本s替换从指定位置start开始到指定位置end结束的文本,start和end不能大于文本区的字符的个数publicvoidappend(Strings):文本区对象调用该方法可以在文本区中附加文本。intgetCaretPostion:文本区对象调用该方法可以获得文本区中光标的位置。publicvoidsetCarePosition(intposition)文本区对象调用该方法可以设置文本区中输入光标的位置,其中position不能大于文本区中字符的个数。publicvoidselectAll():文本区对象调用该方法选中文本区中的全部文本。addTextListener(TextListener):文本区对象调用该方法可以向文本框增加文本监视器。,6.6文本区组件,2.文本框区上的TextEvent事件文本区上的TextEvent事件:文本区中内容的改写。获得监视器:addTextListener(监视器)接口:TextListener接口中方法:textValueChanged(TextEvente),6.6文本区组件,例子9:在一个文本区输入若干英文单词时,另一个文本区排序,6.7标签,Label类的实例就是一个标签。Label类常用的方法:Label()Label(Strings)Label(Strings,intalignment)Alignment取值:Label.LEFT、Label.RIGHT、Label.CENTERPublicvoidsetText(Strings)PublicStringgetText()PublicvoidsetAlignment(intalignment),6.8画布,Java.awt包中的类canvas负责创建画布对象。在canvas子类创建画布对象,并在子类中重写父类的publicvoidpaint(Graphicsg)方法。重写父类时,g是自动实例化的。,6.8画布,例子10:在画布上绘制一个椭圆,6.9面板,Java.awt包中的类Panel负责创建面板。Panel是Container类的子类。Panel也是容器。允许容器嵌套。,6.9面板,例子11:有2个面板,每个面板里添加一个标签和一个按钮,再把两个面板添加到窗体中。,6.10选择框,Java.awt包中CheckBox类用来建立选择框,有选中和末选中两种状态。CheckBox类常用方法:CheckBox():创建选择框,没有名字。CheckBox(Strings):创建选择框,选择框右边名称由S指定CheckBox(Strings,booleanb):创建选择框,右边名称由s指定,是否选中由b指定,b为true时选中.CheckBox(Strings,booleanb,Checboxgroupg):创建选择框,右边的名称由s指定,是否选中由b指定,选择框的组由g来确定,每组只能有一个选择框被选中.PublicvoidaddItemListener(ItemListener)向选择框增加itemEvent事件的监视器.,6.10选择框,CheckBox类常用方法(续):PublicvoidremovetemListener(ItemListener):移去监视器PublicbooleangetSate():该方法返回选择框的布尔状态.setState(booleanb):该方法设置选择框的状态getLabel():获取选择框的名称setLabel(Strings):该方法可以指定选择框的名称,指定的字符串为s.,6.10选择框,选择框上的ItemEvent事件选择框上的ItemEvent事件:选中与未选中之间转换时。事件源获得监视器方法:addItemListener(监视器)接口是ItemListener,创建监视器的类必须实现此接口。接口方法:itemStateChange(ItemEvente)处理事件:getItemSelectable()返回事件源。,6.10选择框,例子12:,6.11下拉列表,Choice类创建下拉列表Choice类常用方法:Choice():使用该构造方法创建下拉列表Publicvoidadd(Strings):下拉列表调用该方法增加一个名字为s的选项PublicintgetSelectedIndex():调用该方法可以返回当前被选中的选项的索引,索引的起始值为0.publicStringgetSelectedItem():调用该方法可以返回当前被选中的选项的名称.Publicvoidremove(intindex):调用该方法从下拉列表中删除索引值为index的选项.PublicvoidremoveAll():删除全部选项PublicvoidaddItemListener(ItemListener):该方法可以向下拉列表增加itemEvent事件的监视器下拉列表上发生ItemEvent事件。,6.11下拉列表,例子13:,6.12滚动列表,Java.awt包中的List用于创建滚动列表。滚动列表可以选中多个选项。在list滚动列表上单击,可以发生ItemEvent和ActionEvent事件:AddItemListener、addActionListener滚动列表的构造方法:List():创建滚动列表List(intn):创建滚动列表,可见行数为nList(intn,booleanb):创建滚动列表,可见行数n,是否允许多选由b指定.,6.13Component类的常用方法,Component类是所有组件的父类组件的颜色设置组件背景色publicvoidsetBackground(Colorc)设置组件前景色publicvoidsetForeground(Colorc)获取组件的背景色publicColorgetBackground(Colorc)获取组件的前景色publicColorgetForeground(Colorc)Color类的构造方法:publicColor(intred,intgreen,intblue),6.13Component类的常用方法,组件的字体PublicvoidsetFont(Fontt)调用该方法设置组件上的字体PublicFontgetFont(Fontt)调用该方法获取组件上的字体字体对象的构造方法:PublicFont(Stringname,intstyle,intsize),6.13Component类的常用方法,例子14:,6.13Component类的常用方法,组件的大小与位置PublicvoidsetSize(intwidth,intheight)设置组件大小PublicvoidsetLocation(intx,inty)设置组件的位置PublicDimensiongetSize()组件调用该方法获取一个Dimension对象的应用,该对象实体中有width和height成员变量PublicvoidsetBounds(intx,inty,intwidth,intheight)调研能够该方法设置组件的位置和大小PublicRectanglegetBounds()调用该方法返回一个Rectangle对象的应用,该对象的实体中含有名字是x,y,width和height成员变量,6.13Component类的常用方法,组件的激活与可见性PublicvoidsetEnabled(booleanb)组件调用该方法可以设置组件是否可以被激活PublicvoidsetVisible(booleanb)设置组件的可见性除了window型组件外,其他的组件默认都是可见的paint方法与repaint方法Publicvoidpaint(Graphicsg),在子类中可以重写该方法当重写该方法时候,相应的java环境将参数g实例化调用Repaint方法,程序先调用update(Graphicsg)方法清除paint方法画的内容,然后再调用paint()方法可以重写update方法来选择清除哪些部分,6.13Component类的常用方法,例子:,6.14窗口事件,Window类子类所创建的对象都可以发生WindowEvent类型窗口事件Frame是Window的子类,可以发生WindowEvent窗口事件。获得监视器:addWindowListener,6.14窗口事件,WindowListener接口,个不同的方法:PublicvoidwindowActivated(WindowEvente)PublicvoidwindowDeactivated(WindowEvente)PublicvoidwindowClosing(WindowEvente)PublicvoidwindowClosed(WindowEvente)PublicvoidwindowIconified(WindowEvente)PublicvoidwindowDeiconified(WindowEvente)PublcivoidwindowOpen(WindowEvente),6.14窗口事件,例子16,6.14窗口事件,一个类实现一个接口时,要必须给出接口中的所有方法的实现。适配器可以代替接口来处理事件,当Java提供处理事件的接口多于一个方法的时候,java就相应提供一个适配器类。WindowAdapter适配器,6.14窗口事件,例子17:,6.14窗口事件,例子18:,6.15鼠标事件,使用MouseListener接口处理鼠标事件用MouseListener接口可以处理的5种操作发生的鼠标事件:在事件源上按下鼠标键在事件源上释放鼠标键在事件源上单击鼠标键鼠标进入事件源鼠标退出事件源,6.15鼠标事件,鼠标事件的类型是MouseEvent,该类有下列几个重要方法:getX():获取鼠标在事件源坐标系中的x坐标getY():获取鼠标在事件源坐标系中的y坐标getModifiers():获取鼠标的左键或者右键.getClickCount():获取鼠标被单击的次数getSource():获取发生鼠标事件的事件源,6.15鼠标事件,MouseListener接口中的方法有:mousePressed(MouseEvent):负责处理鼠标按下事件.mouseReleased(MouseEvent):负责处理鼠标释放事件.mouseEntered(MouseEvent):负责处理鼠标进入容器事件.mouseExited(MouseEvent):负责处理鼠标离开事件.mouseClicked(MouseEvent):负责处理单击鼠标事件.,6.15鼠标事件,例子19:,6.15鼠标事件,使用MouseMotionListener接口处理鼠标事件:在事件源上拖动鼠标、在事件源上移动鼠标。事件源获得监视器方法:addMouseMotionListener(监视器)MouseMotionListener()接口中有如下方法:mouseDragged(MouseEvent)负责处理鼠标拖动事件mouseMoved(MouseEvent)负责处理鼠标移动事件,6.15鼠标事件,鼠标事件的转移可以使用鼠标事件的转移将一个事件源发生的鼠标事件转移到另一个事件源上。使用javax.swing包中的SwingUtilities类的静态方法:MouseEventconvertMouseEvent(Componentsource,MouseEventsource,Componentdestination)可以将sourse组件上发生的鼠标事件转移到组件destination,此方法返回转移后的鼠标事件。,6.15鼠标事件,例子20:,6.16键盘事件,使用KeyListener接口处理键盘事件KeyListener有3个方法:PublicvoidkeyPressed(KeyEvente):PublicvoidkeyTyped(KeyEvente)PublicvoidkeyReleased(KeyEvente)KeyEvent类的:返回键码值:publicintgetKeyCode()判断哪一键被按下或释放,返回字符:publicchargetKeyChar(),6.16键盘事件,键码表课本194页表6-1,6.16键盘事件,例子21:,6.16键盘事件,处理复合键键盘事件KeyEvent对象调用:getModifiers()方法返回InputEvent类的常量值:ALT_MARK、CTRL_MARK、SHIFT_MARK。例:e.getModifiers()=InputEvent.CTRL_MARK其他的构造方法创建的文本框的默认文档类型是PlainDocument的一个实例。PlainDocument类的两个重要方法:insertString(intoffset,Strings,AttributeSeta);remove(intoffset,intlength);,6.17JavaSwing:JComponent类,例子25,6.17JavaSwing:JComponent类,JTextArea文本区默认模型也是PlainDocument的一个实例。JTextArea上不再有TextEvent事件,而是发生DocumentEvent事件。使用addDocumentListener()方法向组件维护的数据模型注册监视器。,6.17JavaSwing:JComponent类,例子26,6.17

温馨提示

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

评论

0/150

提交评论