第五章 图形用户界面设计.doc_第1页
第五章 图形用户界面设计.doc_第2页
第五章 图形用户界面设计.doc_第3页
第五章 图形用户界面设计.doc_第4页
第五章 图形用户界面设计.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

第五章 图形用户界面设计5.2 组件一、java.awt包图1:AWT类层次结构图Component原子组件Container(容器类)Button LabelTextFieldWindowPannelFrame DialogAppletTextAreaCheckboxList Choice.二、javax.swing包在javax.swing包中,主要包含两种类型的组件,顶层容器组件(包括:JFrame 、JDialog、JWindow 、JApplet)和轻量级组件。绝大部分Swing组件(主要是轻量级组件)都是Jcomponent类的子类。Jcomponent类的层次图如下图所示:java.lang.Objectjava.awt.Componentjava.awt.Containerjavax.swing.JComponentSwing中几乎所有的组件都是从JComponent继承而来的,这些组件都是由纯java代码所编写的,而有四个组件并非如此,它们是:JFrame 、JDialog、JWindow 、JApplet,它们分别继承自AWT中的相关类。继承关系如下图所示:JDialog JRootPaneWindowAppletFrameDialogJFrameJRootPaneJWindow JRootPaneJApplet JRootPane说明:1、在Swing中,这四个组件为顶层容器组件,其余的Swing组件都必须依附在这四个组件之上才能显示出来。Swing中这四个组件虽然是其他Swing组件的源头,却并不直接用作容器,而是通过RootPane Container接口来取得相应的容器后,才能加入其他组件。例如:若想在JFrame中加入一个按钮,则必须先取得JFrame的容器才能放置这个按钮。具体而言,应先取得 JFrame的内容面板(Contenet Pane),然后将按钮加入该Contenet Pane中,而非直接加到JFrame上。假设:f是一个JFrame对象,则加入按钮btn按如下方式实现:f.getContentPane().add(btn) ;方法原型: Container getContentPane( )2、Layered PaneJLayered PaneJRootPaneGlass PaneComponment Content PaneContainerMenu BarJMenuBar Swing中的接口RootPane Container中定义了各种获取和设置容器的办法,这里的容器包括JRootPane、Glass Pane、Layered Pane和Content Pane,所以JRootPane组件是每个顶层容器都含有的子组件。JRootPane的组成结构如下图所示。3、JRootJPane使得这些顶层容器能加入其他组件,但它只是一个虚拟的容器,不能向其中加入任何的组件,而是要借助于其他几个容器。当建立一个顶层容器时,系统会自动为此顶层容器建立一个JRootPane组件,然后就可以用Glass Pane、Layered Pane或Content Pane(Menu Bar是可选的,若不选用,则Content Pane会占据整个版面)来添加其他组件或是进行其他操作。 Glass Pane :透明面板,主要功能可以捕获JFrame上的事件。其默认值是不可见,可将其设置为可见。 Layered Pane:层叠面板,本身是容器,可以直接向其中添加组件。例如,JFrame上的Menu Bar或 Popup Menu ,或是其他有层叠关系的组件,就是使用Layered Pane的效果。 Content Pane:最常用的容器,是Layered Pane中的一层,一般视为最底层,若再加入如ToolBar、Menu Bar 或Popup Menu 等组件,系统会自动调整其层次关系。而若使用Layered Pane,程序设计人员必须自行管理组件之间的层次关系,加重了程序维护的困难度,故Content Pane较之Layered Pane更常用。JFrame 、JDialog、JWindow 、JApplet通过实现接口RootPane Container来实现获取和设置容器,该接口中的获取和设置容器的方法如下表所示。表:RootPane Container接口中的方法方法描述Container getContentPane( )获取Content PaneJLayered Pane getJLayered Pane()获取 JLayered PaneComponent getGlassPane()获取 Glass PaneJRootPane getRootPane()返回改组件的JRootPanevoid setContentPane(Container ContentPane)设置Content Panevoid setJLayeredPane(JLayeredPane layered Pane)设置Layered Panevoid setGlassPane(Component gGlassPane)设置Glass Pane常用Swing组件类的层次图如下图所示:java.awt.Containerjavax.swing.JComponentAbstractButtonTextComponmentJFileChooserJProgressBarJTableJMenuBarJToolBarJTreeJToggleButtonJList JButton JMenuItemJCheckBoxJRadioButtonJMenuJTextAreaJTextFieldJEditorPaneJPasswodFieldJTextPaneJComboBoxComponment类的常用方法:方法描述public int getX()返回组件的x坐标public int getY()返回组件的y坐标public int getWidth()返回组件的宽度public int getHeight( )返回组件的高度public void setLocation(int x, int y)设置组件的位置为(x ,y) public void setSize(int width, int height )设置组件的宽度和高度public void setBounds(int x, int y, int width, int height )设置组件的位置及大小public void setVisible(bollean b)设置组件是否可见public void setForeground(Color c)设置组件的前景色public Color getForeground()返回组件的前景色public void setBackground( c )设置组件的背景色public Color getBackground()返回组件的背景色public void setFont( Font f )设置字体public Font getFont( )返回字体说明:(1) Color类用于表示颜色,其构造方法如下:public Color (int r, int g, int b)Color类提供了若干静态常量用于表示常见的颜色,如:Color.RED、Color.GREEN、Color.BLUE、 Color.YELLOW、Color.BLACK、Color.WHITE、Color.GRAY、Color.PINK 。(2) Font类用于表示字体,其构造方法如下:Public Font(String name , int style , int size)name- 字体名;style-用于指定字体样式,采用Font类的静态常量,常用的有:Font.BOLD(粗体)、Font.ITALIC(斜体)、Font.PLAIN(常规 );size -用于指定字体大小,以磅( point ) 为单位。 1.Frame类大常用方法:方法描述public void setVisible( boolean b)设置窗口是否可见,默认是不可见的public void setSize( int width, int height )设置窗口的大小,窗口在屏幕出现的默认位置是点(0,0)public String setTitle(String title )设置窗口标题public void setBounds(int x,int y, int width , int height)设置窗口在屏幕上的初始位置(x,y),窗口大小为宽width,高height public void setResizable(boolean b)设置窗口是否可以调整大小,默认是可调整大小public void dispose()撤销当前窗口,并释放当前窗口所使用的资源JFrame类的方法:public void setIconImage(Imageimage)功能:设置要作为此窗口图标显示的图像。 说明:将单个图像指定为窗口的图标时,可以使用此方法代替 setIconImages()。 如语句: setIconImage(image);2.TextField类(文本字段)的常用方法:方法描述public void setText(Sting text)设置文本框文本public void select(int start, int end)选定从start开始至end结束的字符串public void selectAll()选取所有字符串public void getSelectedText()返回选定的字符串public void setSelectionStart(int selectionStart)设定待选定的字符串的起始位置为selectionStartpublic void setSelectionend (int selectionEnd)设定待选定的字符串的终止位置为selectionEnd public String getText()获取文本框的文本字符串public void setEchoChar(char c)设定密码字符3.TextArea类(文本区域)的常用方法:方法描述setText(Sting text)、getText()、selectAll()select(int start, int end)、 getSelectedText()setSelectionStart (int selectionStart)setSelectionend (int selectionEnd)这些方法与TextField对应的方法功能相同,它们都继承自TextField和TextArea的父类TextComponmentpublic void append(String str)将字符串str 追加至文本末尾public void insert(String str, int position)将字符串str插入到position的位置public void replaceRange(String str, int start , int end)将start end之间的字符串替换为str4.按钮-Button方法描述public String getLabel ()返回按钮上显示的文本public void setLabel (String label)设定按钮上显示的文本public String getActionCommond ()获取该按钮激活的动作命令字符串actioncommond,若actioncommond为null,则返回按钮上的文本public void setActionCommond (String commond)设置该按钮激活的动作事件的命令为commond,该动作命令默认设置为与按钮俄标签相匹配public void addActionListener (actionlistener1 )添加指定的动作监听器,接受这个按钮的动作事件。当用户在该按钮上 按下或释放鼠标时,发生动作事件Actionvent5.标签-Label方法public String getText()获取标签的文本内容public void setText(String text)设定标签的文本内容6.选择型组件-复选框(Chexkbox)方法描述public String getLabel()获取复选框的标签public void setLabel(String label ) 设置该复选框的标签为新的字符串labelpublic boolean getState()获取复选框的状态信息,选中或未选中public void setState(boolean state )设置复选框的状态为指定的状态state,true表示选中状态,false表示取消选中状态public void setCheckboxGroup(CheckboxGroup state )设置该复选框所属的组为指定复选框组g,若该复选框已在另一个组中,必须先从那个组中删除该复选框7.选择型组件-列表框(List)方法描述public void add(String item )将item项添加至列表的末尾public void add (String item, int index )将item项添加到index位置,index从0开始,若index为-1 或超出列表项数,则index项添加至列表的末尾public String getItem( int index)获取index位置处的项public int getItemCount()获取列表拥有的项数public int getSelectedIndex()获取列表中被选定项的下标,如果没有选定的项 或者有多条选定项 ,则返回-1 public int getSelectedIndexes()在允许多选的模式下,获取列表中的选定的多个下标public String getSelectItem( )public String getSelectItem( )返回被选的单项,在允许多选的模式下,返回被选的项目组public void remove(int position)删除position位置处的项public void remove(String item)删除列表中指定的项public void remove All()删除列表的所有项public void select(int index)选定列表中指定位置index处的项8.选择型组件-下拉列表框(Choice)(一种特殊的组合框)说明:Choice的常用方法大多与List的常用方法相同,另外常使用select方法来设定选定的项。方法描述public void select(int pos)设置Choice中选中项为指定位置pos处的项public void select(String str)设置Choice中的指定字符串相等的项为选定项,若有多个项与指定的字符串相匹配,则选中下标最小的项9.面板和画布:A面板: 面板(Panel)Panel,面板类,是Container类的子类,可以作为容器容纳其他组件,但是不能独立存在。通常,可以在Panel中添加若干组件后再放到另一个容器里,这叫容器的嵌套,可以实现较复杂的界面布局。Panel类的构造方法为:public Panel() /创建一个空面板public Panel(LayoutManager Layout) /创建一个面板,用参数Layout 设定布局管理器Panel 可使用继承自Container类的方法add()来向Panel中添加其他组件。 滚动面板(ScrollPane)有时可能需要在较小的容器窗口中显示较大的子部件,这时用Panel就不合适了,而应使用兼有Panel和滚动条(ScrollBar)功能的ScrollPane类。ScrollPane类也是一种容器,同Panel一样不能独立存在,但拥有垂直和水平滚动条,用户可以使用滚动条扩大可查看区域。ScrollPane只能包含一个组件,但结合Panel使用则可以放置多个组件。ScrollPane类的构造方法为: public ScrollPane() / 创建一个滚动面板,根据所包含组件的内容自动决定有无滚动条 pulic ScrollPane(int ScrollBarDisplayPolicy)/ 创建一个滚动面板,通过参数指定滚动条的显示方法参数ScrollBarDisplayPolicy 的取值有:ScrollPane.SCROLLBARS_ALWAYS /总是显示ScrollPane.SCROLLBARS_AS_NEEDED /需要时显示ScrollPane.SCROLLBARS_AS_NEVER /从不显示B、画布(Canvas) java.awt.Component Canvas表示屏幕上的一块空白矩形区域,它不是容器,而是一个可以在其上绘制图形或图片且能在此处捕获用户的操作产生的相应事件的类。创建自己的画布对象的常用方法是继承Canvas类,并覆盖Canvas类的paint()方法来绘制该画布的外观。注意:在创建画布类的构造方法中给定画布的尺寸。Swing包中的原子组件:Timer:定时器位于javax.swing包中,直接继承java.lang.Object类。Timer可以实现一段时间的控制,当达到一定的时间点时能触发ActionEvent,若要处理该事件,实现ActionListener即可。比如:利用Timer组件可以实现幻灯片浏方式浏览图片的功能,只要设置换图片时间间隔,周期性的触发ActionEvent事件并实现换图即可。Timer的构造方法:public Timer(int delay , ActionListener listener)/ 建立一个Timer组件,并在每一次delay(时间间隔,单位:ms)的时间点/上触发ActionEvent事件。Timer组件常用方法:方法start():激活Timer组件;方法stop():停止Timer组件;方法restart():重新激活Timer组件;方法setRepeats( boolean flag ):设置是否反复触发ActionEvent事件;方法setDelay(int delay):重新设置delay(时间间隔)时间JProgressBar:进度条提供了直观的图形化的进度提示,进度条的典型应用如安装软件时显示安装进度,打开一个包含动画的网页时提示正在载入动画等。使用Swing中的JProgressBar组件可以简单地输出进度变化情况。JProgressBar的常用构造方法:Public JProgressBar()Public JProgressBar(int orient, int min, int max)参数说明:orient:设置进度条的方向,取值为HORIZONTAL或VERTICAL。 min 和max:设置进度条的最值。默认最小、大值分别为0、100,方向为水平方向。进度条的常用方法:setMinimum(int n) 、setMaxi mum(int n):设置最小、大值。setValue(int n):设置进度条的当前值。setBorderPainted(boolean b ):设置是否显示进度条的边框。setString(String s):设置进度条上的文字信息。进度条的事件处理:当JprogressBar的值发生改变时,会触发ChangeEvent事件,实现ChangeListener接口可处理该事件。ChangeListener接口中只包含一个方法statechanged:statechanged方法原型:public void statechanged(ChangeEvent e )JTextField、JTextArea、JPasswordField 、JTextPane:它们继承自:javax.swing.JComponent javax.swing.text.JTextComponent(1)JPasswordField:可使输入的信息以单一字符的形式显示,这样可以避免敏感信息被看到,常用于密码输入。javax.swing.JTextField javax.swing.JPasswordFieldJPasswordField类常用构造方法:JPasswordField():构造一个新 JPasswordField,使其具有默认文档、为 null 的开始文本字符串和为 0 的列宽度。JPasswordField(Documentdoc, Stringtxt, intcolumns):构造一个使用给定文本存储模型和给定列数的新 JPasswordField。JPasswordField(intcolumns):构造一个具有指定列数的新的空JPasswordField。JPasswordField(Stringtext) :构造一个利用指定文本初始化的新的JPasswordField。JPasswordField(Stringtext, intcolumns) :构造一个利用指定文本和列初始化的新 JPasswordField。(2)JTextPane:支持多行的文本组件,但相对于JTextArea而言,JTextPane提供了许多对文字的处理功能,如设置颜色、字体分格、设定大小、添加图片等。JTextPane类的构造方法:public JTextPane()public JTextPane( StyledDocument doc ) /以给定的文件模式创建一个JTextPane对于文档中的文字若要以不同的样式呈现,给文字设置不同的“属性”即可,JTextPane对文字的各种处理效果也都是由设置文字属性来实现的。具体实现:主要由两个类来完成,可以使JTextPane的内容具有丰富的变化。第一个:SimpleAttributeSet类,该类实现了AttributeSet接口,具备该接口中的所有功能;第二个:StyleConstants类,该类为AttributeSet类提供许多常用的属性值和设置属性的方法,这些方法都是static,以StyleContants方法名(参数表)的方式进行调用,其第一个参数是AttributeSet类或其子类。Swing包中的顶级容器:JFrame:是Swing应用程序的窗口组件,是Swing中最常用的容器组件,常看作是 “最底层” 容器,可以添加其他容器(如JPanel等),也可添加其他组件(如Jlabel、Jbutton等)。组件的摆放可以使用LayoutManger来实现,Swing中可以使用AWT的Layout Manager。JFrame类的构造方法:public JFrame()public JFrame(String title) /建立新的JFrame组件,标题字符串title,默认不可见。JFrame组件常用方法:方法描述public Container getContainePane()返回JFrame组件的ContainePanepublic void setDefaultCloseOperation( int operation)设置单击窗口关闭按钮时的默认操作说明:方法setDefaultCloseOperation的参数operation可以取值为如下4个常量之一:DO_NOTHING_ON_CLOSE 、HIDE_ON_CLOSE 、 DISPOSE_ON_CLOSE、EXIT_ON_CLOSE,其中前3个在接口WindowConstants(JFame实现了该接口)中定义,最后一个在JFrame中定义。Swing包中的中间容器:1.JPanel是Swing中的面板,继承自javax.swing.JComponent,主要用于放置轻量级组件,JPpanel的对象可以作为顶层容器的内容面板来使用。同AWT包中的Panel相似,将JPpanel与Layout Manger 结合使用可以更有效的进行版面设计和管理.JPpanel的构造方法:public JPanel() /创建一个JPanel组件,默认布局使用FlowLayout(顺序布局)public JPanel(LayoutManager Layout) /创建一个JPanel组件,用参数Layout 设定布局管理器JPanel 可使用继承自Containe类的方法add()来向JPanel中添加其他组件。2.JScrollPanel是Swing包中的滚动面板。是由JViewPoint与JScrollBar所组成的,其中,JViewPoint主要负责显示区域的大小,形状为一平面矩形;JScrollBar主要产生窗口滚动条,让用户可以看到更多的内容。JScrollPanel的构造方法:public JScrollPanel( )public JScrollPanel(Component view)public JScrollPanel(int vbsPolicy , int hsbPolicy )public JScrollPanel(Component view, int vbsPolicy , int hsbPolicy )说明: 参数:view表示要在JScrollPanel中显示的组件;vbsPolicy、 hsbPolicy 分别用于设置JScrollPanel组件的垂直滚动条和水平滚动条的显示策略,缺省时则当view大于显示区域时自动产生滚动条。若在创建JScrollPanel组件时没有指定滚动条的显示策略,可以利用下述方法设定水平滚动条和垂直滚动条的显示策略:public void setHorizontalScrollBarPolicy( int Policy )public void setVerticalScrollBarPolicy( int Policy )事件与事件处理:一、概念事件:是指GUI的用户与GUI交互时所触发的事件。事件处理:就是当用户触发某一事件时,系统做出的响应,对事件进行处理实现GUI与用户的真正交互。事件监听器:Java中处理事件的对象称为事件监听器。事件处理机制主要包括3个部分:事件源:产生事件的组件。事件(对象):用户对组件的操作所触发的事件对象。事件监听器:负责处理事件的对象,也可称为事件处理器。解释:组件产生的事件是某种事件类的对象,特定的事件类有与之对应的处理该事件的监听器接口,要对事件进行处理就要在具体的事件监听器中实现该事件对应的事件监听器接口。Java的事件类和监听器接口大多在java.awt.event包中,一些Swing组件所特有的事件监听器接口则在javax.swing.event包中声明。java.awt.event包中定义的一些事件类如下图所示:java.lang.Object java.util.EventObject java.awt.AWTEventjava.awt.AWTEventActionEventAdjustmentEventItemEventTextEventComponentEventContainerEventFocusEventPaintEventWindowEventInputEventKeyEventMouseEventjava.awt.AWTEvent包中声明的监听器接口扩展了java.util.EventListener 接口,AWT类与其对应的监听器接口如下表所示。AWTEventAWT EventListenerAWT EventListener描述ActionEventActionListener用于接收动作事件的监听器接口AdjustmentEventAdjustmentListener用于接收调整事件的监听器接口ComponentEventComponentListener用于接收组件事件的监听器接口ContainerEventContainerListener用于接收容器事件的监听器接口FocusEventFocusListener用于接收组件上的焦点事件的监听器接口ItemEventItemListener用于接收选项事件的监听器接口KeyEventKeyListener用于接收键盘事件的监听器接口MouseEventMouseListener 用于接收组件上的鼠标事件的监听器接口MouseMotionListener用于接收组件上的鼠标移动事件的监听器接口TextEventTextListener用于接收文本组件事件的监听器接口WindowEventWindowListener用于接收窗口事件的监听器接口事件处理机制: 组件(事件源)事件对象XXXEvent 事件监听器 XXXListener注册监听器 交互动作生成事件对象把事件对象传入事件监听器1.事件处理步骤如下:确定事件源:知道什么组件要被处理,如按钮或菜单项。确定事件对象:知道什么样的事件要被处理,如单击按钮或选择菜单项。实现事件监听器:即编写实现事件监听器的事件处理代码。组件(事件源)事件对象XXXEvent 事件监听器 XXXListener注册监听器 交互动作生成事件对象把事件对象传入事件监听器图示说明:事件侦听器(XXXListener)首先要与其监听的组件(即:事件源)建立关联,当组件上发生交互作用时,组件会自动产生一个相对应的事件对象(XXXEvent),并将该事件对象的引用传递给与之相关联的事件侦听器(实现了XXXListener接口的对象),该事件侦听器就会启动并执行相关的代码来处理这个事件。2.各种事件监听器接口中都声明了一些处理事件的抽象方法,当要对事件进行具体的处理操作时,要在相应的事件监听器中重写处理事件的抽象方法。下面是一些常用的事件类及其对应的监听器接口:1. WindowEvent事件类:- 监听器接口WindowListenerWindowListener接口中的方法:方 法描 述void windowOpened(WindowEvent e) 打开窗口时被调用void windowClosing(WindowEvent e)关闭窗口时被调用void windowClosed(WindowEvent e)窗口关闭之后被调用void windowIconified(WindowEvent e)窗口图标化,即窗口最小化时被调用void windowDeiconified(WindowEvent e)窗口从最小化状态复原时被调用void windowActivated(WindowEvent e)窗口被激活时调用void windowDeactivated(WindowEvent e)窗口被取消激活状态时调用2. ActionEvent事件类ActionEvent 事件对应一个动作事件,如单击按钮、选择菜单项、在单行文本框中输入字符串并按回车键,都可看作是ActionEvent类的事件。可能产生ActionEvent事件的AWT组件主要有:Button、TextField、MenuItem、List。ActionEvent 类对应的侦听器接口是ActionListener。ActionEvent 类常用方法如下所示:方法描述public String getActionCommand()获取事件源的动作命令字符串public Object getSource()获取发生ActionEvent事件的事件源对象的引用处理ActionEvent事件的侦听器接口是ActionListener,其中只包含一个方法:Public void actionPerformed(ActionEvent e)当ActionEvent事件发生时,该方法被调用。例如:在初始状态如右图所示的界面上,当用户在姓名文本框中输入姓名并按回车键或单击“确定”按钮都能触发ActionEvent事件并在下方的文本框中显示一行信息;而当用户单击“重置”按钮之后,将清空两个文本框。说明:在这个例子中,需要监听用户输入姓名的文本框和两个按钮,并判断那个组件上引发了事件,然后再做出相应的处理。程序为:ActionEventDemo1.java总结:编写事件处理代码的4种常用的方式。(1) 直接在GUI组件所在的类中实现监听器接口,必须在类定义时用implements 声明要实现那个接口,并在类中实现这些接口的所有的抽象方法。即例程ActionEventDemo1.java采用了这种方式。(2) 实现GUI的类和实现事件处理的监听器类分别定义,专门定义监听器类来实现某种监听器接口以对某种事件进行处理。可以用一个监听器类(外部类)对多个可能产生同类型事件的组件进行监听和处理。例程ActionEventDemo2.java采用了这种方式。(3) 用普通的内部类(Inner class)来实现。例程ActionEventDemo3.java采用了这种方式。(4) 用内部类的特殊形式匿名内部类来实现监听器。在向组件注册监听器时,直接用new 创建一个实现了监听器接口的匿名内部类的对象,实现其抽象方法对组件上的事件进行处理。该方式适用于事件处理代码较少的情况。即:例程ActionEventDemo4.java采用了这种方式。3.ItemEvent事件类ItemEvent事件时发生在具有项目选择功能的组件上的,比如,选中List或Choice中的选项或是改变了Checkbox的状态时,就会引发ItemEvent事件。常用方法:方法描述public Object getItem()返回发生ItemEvent事件的选项public int getStateChange()返回发生ItemEvent事件选项的选中与否的状态,其值为ItemEvent.SELECTED或ItemEvent.DESELECTED(分别表示选中和取消选中状态)处理ItemEvent事件,需要实现ItemListener接口,其中包含一个方法:public void itemStateChanged(ItemEvent e )功能:当选项的选择状态发生改变时被调用。4. TextEvent 事件TextEvent 事件发生在文本组件(TextField和TextArea)中的字符串发生改变时。前面介绍的ActionEvent事件也可以发生在TextField上,但产生的时机是输入文本并按下Enter键之后,TextEvent事件是在向TextField输入字符串而还未按下Enter键时就会引发该事件。处理TextEvent 事件的监听器接口是TextListener,该接口中只包含一个方法:void textValueChanged( Textevent e )说明:当文本组件上的字符串发生改变时被调用。5. MouseEvent事件类MouseEvent事件是用户使用鼠标在某个组件上进行某种动作时产生的事件,比如鼠标单击组件、鼠标移入组件区域、鼠标移出组件区域等都会发生MouseEvent事件,任何组件都可以引发MouseEvent事件。MouseEvent事件类的常用方法:方法描述public int getClickCount()获取与事件相关的鼠标单击次数Public Point getPoint()返回一个Point对象,即(x,y)坐标值,指出鼠标在组件中单击的位置public int getX()返回鼠标指针的x坐标public int getY()返回鼠标指针的y坐标Public int getButton()获取发生了状态改变的鼠标按钮public boolean isPopupTrigger()返回此鼠标事件是否为该平台的弹出菜单触发事件。说明:public boolean isPopupTrigger():返回此鼠标事件是否为该平台的弹出菜单触发事件。 注:在不同系统上弹出菜单的触发方式不同。因此,为了正确实现跨平台功能,在 mouseReleased 和 mousePressed 中都应检查 isPopupTrigger。 返回: 一个 boolean 值,如果此事件是此平台的弹出菜单触发器,则为 true。MouseEvent事件对应的侦听器接口有两个:MouseListener 接口处理鼠标单击、按下、释放、移入组件和移出组件的事件。MouseMotionListener 接口处理鼠标的拖放和移动事件。MouseListener 接口中包含五个方法:方法描述 void mouseClicked(MouseEvent e)当鼠标在组件上单击时被调用void mousePressed(MouseEvent e)在组件上按下鼠标按钮时被调用void mousReleased(MouseEvent e)在组件上释放鼠标按钮时被调用void mouseEntered(MouseEvent e)鼠标指针进入组件区时被调用void mouseExited(MouseEvent e)鼠标指针离开组件区时被调用弹出式菜单的显示方法:public void show(Componentorigin,intx,inty)功能:在相对于初始组件的 x、y 位置上显示弹出式菜单。参数: origin - 定义坐标空间的组件; x - 弹出菜单的 x 坐标位置 ;y - 弹出菜单的 y 坐标位置 说明:初始组件必须包含在弹出式菜单的父菜单的组件层次结构中。初始组件和父菜单必须显示在对此方法有效的屏幕中。 如果此 PopupMenu 正被作为 Menu 使用(即它有一个非 Component 父菜单)

温馨提示

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

评论

0/150

提交评论