第9章 java 可视化编程(二).doc_第1页
第9章 java 可视化编程(二).doc_第2页
第9章 java 可视化编程(二).doc_第3页
第9章 java 可视化编程(二).doc_第4页
第9章 java 可视化编程(二).doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

第9章 可视化编程(二)2总体概要2相关知识2学习重点2内容框架39.1事件监听器39.1.1事件和事件监听接口3(一)事件概述3(二)事件类(java.awt包)49.1.2实现事件监听接口6(一)事件监听接口6(二)事件监听器的注册与注销8(三)事件适配器8(四)组适配器类(Adapter)89.2常用事件方法89.2.1动作事件8(一)ActionEvent对象的常用方法9(二)动作事件的实现99.2.2焦点事件10(一)FocusListener接口的方法10(二)焦点事件的实现119.2.3按键事件12(一)KeyListener接口的构造方法12(二)KeyEvent接口的常用方法12(三)按键事件的实现129.2.4菜单事件14(一)MenuListener接口方法14(二)菜单事件的实现149.2.5鼠标事件和鼠标移动事件16(一)MouseListener和MouseMotionListener中的方法16(二)鼠标事件实现169.2.6窗口事件18(一)windowListener接口的方法18(二)WindowEvent对象常用的方法18(三)窗口事件的实现199.3窗口组件209.3.1窗口219.3.2窗口的构造方法219.3.3窗口的常用方法219.3.4窗口的用途219.4框架229.4.1Frame的构造方法229.4.2Frame的常用方法229.4.3创建可关闭框架229.4.5框架事件适配器249.4.6在框架中加入组件269.4.7多重框架279.5对话框299.5.1对话框的构造方法299.5.2对话框的常用方法309.5.3创建自定义对话框309.6菜单339.6.1菜单中常用的构造方法339.6.2创建菜单339.7综合实例36记事本369.8小结369.9习题36参考:计算器37第9章 可视化编程(二)总体概要l 知道事件l 了解事件监听器,事件适配器,以及常用的事件类l 理解掌握GUI组件注册事件监听器的实现l 掌握常用的事件监听接口l 理解与掌握事件的用法l 熟练掌握事件方法: 动作事件,焦点事件,按键事件,菜单事件,鼠标事件,鼠标移动事件,窗口事件l 理解可关闭的窗口l 熟练掌握在窗口中添加组件和菜单l 掌握创建自定义对话框相关知识l 知道application程序有什么用,怎么去实现l 了解Application程序与applet程序的区别l 区分Javax.Swing和java.awt包中相应组件的区别和联系学习重点l 事件源、事件处理器l 向组件添加方法l 能熟练的用抽象窗口工具箱编写application程序l 能灵活的把GUI组件添加到相应窗口中的位置内容框架按键事件图形用户介面二组件事件事件监听器窗口Window(JWindow)焦点事件Frame(JFrame)菜单常用事件方法Dialog(JDialog)动作事件实现事件监听接口事件和事件监听接口窗体事件鼠标事件和鼠标移动事件菜单事件9.1事件监听器9.1.1事件和事件监听接口(一)事件概述在面向对象的程序设计中,事件消息(Event Message)是对象间通信的基本方式。在图形用户界面程序中,GUI组件对象根据用户的交互产生各种类型的事件消息,这些事件消息由应用程序的事件处理代码捕获,在进行相应的处理后驱动消息响应对象做出反应。 面向对象程序设计中需要明确两个在事件处理过程中的对象:事件源和事件处理器。例如,当用户在按钮上点击鼠标时,该按钮对象就是事件源。处理该按钮被按下事件的方法就称为事件处理器。在事件处理器对象中,可以利用Java事件对象Event中定义的getAvtionCommand方法获取引发该事件动作时的字符串参数。Java GUI组件对象能够产生事件的诱因很多,例如用户利用鼠标来点击按钮、拉动滚动条、窗口的覆盖、遮挡以及鼠标在绘图区中移动等。在JDK1.2以前的版本中定义的事件消息只能由指定的事件处理对象进行处理,不能对事件消息进行传播(Propogate)。为了解决事件消息不能在Java对象间进行传播的问题,JDK1.2(Java2)版对消息处理和响应模型进行了更新,定义了“事件代理模型”。该模型根据对象的事件消息处理方式,将消息处理对象分为事件对象(Event Class)、事件监听接口对象(Event Listener)、事件适配器对象(Event Adapter)和事件容许对象(Event Enabling)。Java将用户在用户界面中引发的事件封装成为事件对象,所有与该事件有关的信息和参数均封装在事件对象中。定义在java.util包中的EventObject对象是所有这些事件对象的公共父对象。另外,在java.awt包中定义的AWTEvent抽象类中,定义了各种事件类型的标识以及获取这些事件标识的方法,因此该对象也是所有类型事件对象的抽象父类。定义在java.awt.event包中的事件对象的定义和继承关系如下图所示:ItemEventJava.awt.AWTEventActionEventJava.awt.EventObjectAdjustmentEventInputEventKeyEventComponentEventFocusEventContainerEventWindowEventMouseEventTextEvent图9-1(二)事件类(java.awt包)事件类是真正封装了事件消息的对象。Java.awt.event提供一组事件类用以代表窗口元素可能引发的种种事件类型。所有的事件类都从java.awt.AWTEvent派生而来,而AWTEvent又是类java.util.EventObject的子类。这些事件从概念上又可分为两大类:低级事件类(low-leve)和语义事件类(semantic)。低级事件类型代表低级输入或对可视组件的窗口系统进行界面改动的事件,如组件的移动,窗口的关闭,键盘输入等,语义事件类型则代表用户有意识的对窗口进行操作以选择执行某项功能的事件,如菜单的选择,滚动条拖动。对所有定义的事件类型,java.awt.event都提供了相对应的监听接口,这些接口都从类java.util.EventListener派生而来,都封装有若干个处理某类事件不周情形的抽象方法。事件类型事件名称引发情况描述Sem anticActionEvent选中菜单,按下按扭等指示发生了组件定义的动作的语义事件, 当特定于组件的动作(比如被按下)发生时,由组件(比如 Button)生成此高级别事件。事件被传递给每一个 ActionListener 对象,这些对象是使用组件的 addActionListener 方法注册的,用以接收这类事件。注:要使用键盘在 Button 上触发 ActionEvent,请使用空格键。AdjustmentEvent滚动条位置改变由实现了 Adjustable 接口的对象所发出的调整事件。ItemEvent列表框,选择框等选项选中,撤销选择指示项被选定或取消选定的语义事件。此高级事件是在用户已选定项或取消选定项时由 ItemSelectable 对象(如 List)生成的。该事件被传递到每个 ItemListener 对象,这些对象都已使用组件的 addItemListener 方法注册接收此类事件TextEvent文本框输入,修改等指示对象文本已改变的语义事件。当某个对象(如 TextComponent)的文本改变时,该对象将生成此高级别事件。该事件被传递给每一个使用组件的 addTextListener 方法注册以接收这种事件的 TextListener 对象。Low-levelComponentEvent组件移动,组件大小变化指示组件被移动、大小被更改或可见性被更改的低级别事件(它也是其他组件级事件的根类)。ContainerEvent窗口内组件的添加,删除指示容器内容因为添加和移除组件而更改的低级别事件。FocusEvent窗口激活,拖动滚动条指示 Component 已获得或失去输入焦点的低级别事件。此低级别事件由 Component(比如 TextField)生成。事件被传递给每一个 FocusListener 或 FocusAdapter 对象,这些对象使用 Component 的 addFocusListener 方法注册,以接收这类事件。(FocusAdapter 对象实现 FocusListener 接口。)当发生该事件时,所有这类侦听器对象都将获得此 FocusEventInputEvent键盘输入,鼠标操作所有组件级别输入事件的根事件类。 输入事件通常由产生输入事件的源代码进行处理,而在此之前,将他们提交到侦听器中。这样就允许侦听器和组件子类“使用”事件,以便源代码不会以默认方式处理事件。例如,在 Button 组件上使用 mousePressed 事件将阻止 Button 被激活。InputMethodEvent输入方法事件包含有关使用输入方法进行撰写的文本的信息。只要文本发生变化,输入方法就会发送一个事件。如果当前正在使用输入方法的文本组件是活动的客户端,则将事件指派给该组件。否则,将事件指派给单独的组合窗口。KeyEvent某键按下,某键松开指示组件中发生击键的事件。 当按下、释放或键入某个键时,由组件对象(如文本字段)生成此低级别事件。该事件被传递给每一个 KeyListener 或 KeyAdapter 对象,这些对象使用组件的 addKeyListener 方法注册,以接收此类事件。(KeyAdapter 对象实现 KeyListener 接口。)发生事件时,所有此类侦听器对象都获取此 KeyEventMouseEvent鼠标移动,鼠标按下MouseEvent 接口提供与鼠标事件相关联的特定上下文信息。 从 UIEvent 继承的 detail 属性指示在用户操作期间同一屏幕位置上鼠标按键被按下和释放的次数。用户开始此操作时属性值为 1,对每个完整的按下和释放序列增加 1。如果用户在 mousedown 和 mouseup 之间移动鼠标,则将值设置为 0,指示没有进行单击操作。WindowEvent窗口关闭,窗口图标化等指示窗口状态改变的低级别事件。当打开、关闭、激活、停用、图标化或取消图标化 Window 对象时,或者焦点转移到 Window 内或移出 Window 时,由 Window 对象生成此低级别事件。图9-2说明按照产生事件消息的对象类型不同,可以将Java事件对象分为低层事件对象和高层事件对象两种类型。Java应用程序中的对象实例正是通过这些对象,实现对象驱动与消息传递.在以事件内容为AWT事件对象模型中,AWT组件对象产生事件消息,由事件适配器进行调动后,将事件类型传递给相应的事件响应方法。9.1.2实现事件监听接口(一)事件监听接口事件监听接口在实际使用时,用户需要建立自己的事件处理类,如MyListener,它必须实现用户要处理的事件所对应的接口,即完成接口定义的抽象方法,然后,在引发事件的组件对象上用”addListener”方法添加事件处理类对象,例如为button添加ActionEvent处理对象的语句为:button.addActionListener(MyListener);接口事件类别接口说明描述ActionListenerActionEvent动作命令监听接口定义了一个接收动作事件的方法void actionPerformed(ActionEvent e)AdjustmentListenerAdjustmentEvent数值调整监听接口定义了一个接收调整事件的方法void adjustmentValueChange(AdustmentEvent e)ComponentListenerComponentListener组件监听接口定义了四个方法来识别何时隐藏、移动、改变大小、显示组件void componentHidden(ComponentEvent e)void componentMoved(ComponentEvent e)void componentResized(ComponentEvent e)void componentShown(ComponentEvent e)ContainerListenerContainerEvent容器监听接口定义两个方法来识别何时从容器中加入或除去组件void componentAdded(ContainerEvent e)void componentRemoved(ContainerEvent e)FocusListenerFocusListener焦点监听接口定义两个方法来识别何时组件获得或失去焦点void focusGained(FocusEvent e)void focusLost(FocusEvent e)ItemListenerItemLIstener选项事件监听接口定义一个方法来识别何时项目状态改变void itemStateChange(ItemEvent e)KeyListenerKeyEvent键盘监听接口定义三个方法来识别何时键按下、释放和键入字符事件void keyPressed(KeyEvent e)void keyReleased(KeyEvent e)void keyTyped(KeyEvent e)MouseLitenerMouseEvent鼠标监听接口定义五个方法来识别何时鼠标单击、进入组件、离开组件、按下和释放事件void mouseClicked(MouseEvent e)void mouseEntered(MouseEvent e)void mouseExited(MouseEvent e)void mousePressed(MouseEvent e)void mouseReleased(MouseEvnet e)MouseMotionListenerMouseEvent鼠标动作监听接口定义两个方法来识别何时鼠标拖运和移动void mouseDragged(MouseEvent e)void mouseMoved(MouseEvent e)TextListenerTextEvent文本监听接口定义一个方法来识别何时文本值改变void textValueChanged(TextEvent e)WindowListenerWindowEvent窗口监听接口定义七个方法来识别何时窗口激活、关闭、失效、最小化、还原、打开和退出void windowActivated(WindowEvent e) /激活void windowClosed(WindowEvent e) /关闭void windowDeactivated(WindowEvent e) /失效void windowDeiconified(WindowEvent e) /还原void windowIconified(WindowEvent e) /最小化void windowOpened(WindowEvent e) /打开void windowClosing(WindowEvent e) / 退出图9-3(二)事件监听器的注册与注销 注册监听器:Public void add(Listener); 注销监听器:Public void remove(Listener);(三)事件适配器由于有的监听接口处理多种事件,定义的抽象方法较多,因而当我们直接实现这些接口时,需要完成所有的方法,这是比较麻烦又没有必要的,为了方便使用,java.awt.event提供了一(四)组适配器类(Adapter)这是一组抽象类,它们实现了相应的监听接口,但所有的方法都是空方法,没有具体语句。使用时,我们派生出自己的适配器类,然后重写需要的事件处理方法,不再要求完成所有的方法。适配器类适配器说明对应的监听者ComponentAdapter组件适配器ComponenetListenterContainerAdapter容器适配器ContaierLIstenerFocusAdapter焦点适配器FocusLIstenerKeyAdapter键盘适配器FocusLIsteberMouseAdapter鼠标适配器MouseListenerMouseMotionAdapter鼠标动作适配器MouseMotionLIstenerWindwAdapter窗口适配器WindowLIstener图9-4【注意】事件适配器提供了一种简单的实现监听器的手段,可以缩短程序代码,但是,由于java的单一继承机制,当需要多种监听器或此类已有父类时,就无法采用事件适配器了。对于ActionListener、AdjustListener、ItemListener和TextListener,由于它们只定义了一个方法,所以没有提供相应的适配器类。9.2常用事件方法9.2.1动作事件当用户用Button(JButton)、CheckBox(JCheckBox)、TextField(JTextField)或JradioButton等组件的时候将出现动作事件。接口ActionListener只有惟一的一个方法actionPerformed(ActionEvent e)它的形式是:pubilc void actionPerformed(ActionEvent e) /方法体。(一)ActionEvent对象的常用方法我们可以通过这些方法可以进行事件的信息处理操作,需要注意的是,这些方法都是它本身所包括的方法不包括其父类的方法。 Public String getActionCommand()返回与此动作相关的命令字符串 Public int getModifiers()返回发生此动作事件期间按下的组合键。 Public long getWhen()返回发生此事件时的时间戳。 Pulbic String paramString()返回标识此动作事件的参数字符串。(二)动作事件的实现【例】动作事件的实现,程序代码名为ALTest.java,代码如下所示package bedeck;import javax.swing.*;import java.awt.event.*;public class ALTest extends JFrameJButton b1 = new JButton(单击事件测试);JTextArea ta = new JTextArea(单击按钮就文本区的内容就会发生变化,5,10);public ALTest()super(单击事件测试);this.setSize(400,280);/* * 单击事件 * */b1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)ta.setText(你已点击按钮了n命令字符串:+e.getActionCommand()+n事件发生时间:+e.getWhen()+n事件源:+e.getSource(););this.setLayout(null); /使用手工布局this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0); /关闭窗口);/* * 设置组件的位置 * */b1.setBounds(10, 30, 85, 35); ta.setBounds(100, 30, 230, 90);this.add(b1);this.add(ta);this.setVisible(true);public static void main(String a)new ALTest(); /实例化ALTest图9-5说明:如果在程序中是使用swing包中的Jframe对象,可以不添加关闭事件,即可关闭窗口,但需注意的是,要设置Jframe的大小,否则窗口只显示一个标题栏。运行结果如9-6所示图9-69.2.2焦点事件当图形化界面上的某个组件失去焦点的时候,发生焦点事件。得到焦点的组件说明该组件正处于活动状态,如果某个文本域含有焦点,如JTextField(TextField),则在它的域内显示一个光标,如果某个组件上有焦点,如JButton(Button),则按钮上将出现 一个用虚线组的轮廓。(一)FocusListener接口的方法 focusGained(FocusEvente)组件获得键盘焦点时调用。 focusLost(FocusEvente)组件失去键盘焦点时调用。 FocusEvent对象的常用方法 Public Component getOppositeComponent()返回此焦点更改中涉及的另一个 Component。 Public boolean isTemporary()将焦点更改事件标识为暂时性的或持久性的。 Public String paramString()返回标识此事件的参数字符串。(二)焦点事件的实现【例】焦点事件的实现,程序名为FETest.java,代码如下所示package bedeck;import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.io.*;public class FETest extends JFrame implements FocusListenerJTextField jtf = new JTextField(文本框,10);JTextArea jta = new JTextArea(文本区的默认内容,10,5);public FETest()super(焦点事件的实现);this.setSize(350,320);this.setLayout(new BorderLayout();jtf.addFocusListener(this);this.add(North,jtf);this.add(Center,jta);this.setVisible(true);public static void main(String a)new FETest();/* * FocusListener接口的实现 * */public void focusGained(FocusEvent e)jtf.setText();jta.setText(文本框获取焦点);public void focusLost(FocusEvent e)jtf.setText(已失去了焦点);jta.setText(文本框失去焦点);图9-7运行结果如9-8所示图9-8【注意】提供轻量级组件的 scrollable 视图,JScrollPane 不支持重量级组件9.2.3按键事件在健盘上按下或者放开键的时候会发生按键事件,任何组件都可以产生这种事件。(一)KeyListener接口的构造方法 keyPressed(KeyEvente)按下某个键时调用此方法。 keyReleased(KeyEvente)释放某个键时调用此方法。 keyTyped(KeyEvente)键入某个键时调用此方法。(二)KeyEvent接口的常用方法 Public Char getKeyChar()返回在键盘上按下的字符 Public int getKeyCode()返回与此事件中的键相关联的整数 keyCode。 Public int getKeyLocation()返回产生此按键事件的键位置。 Public String paramString()返回标识此事件的参数字符串。 Public void setKeyChar(charkeyChar)设置 keyCode 值,以表明某个逻辑字符。 Pubic void setKeyCode(intkeyCode)设置 keyCode 值,以表明某个物理键。(三)按键事件的实现【例】按件事件的实现,程序名为KLTest.java,程序代码如下所示package bedeck;import java.awt.event.*;import java.awt.*;import javax.swing.*;/* *application程序 * */public class KLTest extends JFrame implements KeyListenerJLabel jl = new JLabel(请在文本框中输入内容:);JTextField jtf = new JTextField(10);JTextArea jta = new JTextArea(这是按健事件之前的内容,8,23);public KLTest()super(按键事件的实现);this.setSize(350, 250);jtf.addKeyListener(this); /向文本区添加按健事件jta.setAutoscrolls(true);this.setLayout(new FlowLayout(); /设置布局方式this.add(jl);this.add(jtf);this.add(jta);this.setVisible(true);/* * 实现按键事件中接口的方法 * */public void keyPressed(KeyEvent e)System.out.println(sdgds);jta.setText(健盘按键按下);public void keyReleased(KeyEvent e)jta.setText(健盘按键放开);public void keyTyped(KeyEvent e)jta.setText(键盘字符是:nt+e.getKeyChar()+n键盘字符码是:nt+e.getKeyCode()+n事件字符为:nt+e.paramString();/* * main()方法 * */public static void main(String a)new KLTest();图9-9运行结果如9-10所示图9-109.2.4菜单事件菜单事件只是针对Menu(JMenu)和MenuItem(JmenuItem)组件进行的,当菜单进行选择、取消、删除的时候产生这种事件。(一)MenuListener接口方法 Public void menuCanceled(MenuEvente)取消菜单时调用。 Public void menuDeselected(MenuEvente)取消选择某个菜单时调用。 Public void menuSelected(MenuEvente)选择某个菜单时调用。 (二)菜单事件的实现【例】菜单事件的实现,程序代码如MLTest.java,代码如下所示package bedeck;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.awt.*;public class MLTest extends JFrame implements MenuListenerJMenuBar jmb = new JMenuBar();JMenu jm1 = new JMenu(菜单一);JMenu jm2 = new JMenu(菜单二);JMenu jm3 = new JMenu(菜单三);JMenuItem jmi11 = new JMenuItem(选项一);JMenuItem jmi12 = new JMenuItem(选项二);JMenuItem jmi21 = new JMenuItem(选项一);JTextArea jta = new JTextArea(这是默的内容);public MLTest()super(菜单事件的实现);this.setSize(320,250);this.setLayout(new BorderLayout();jmb.add(jm1);jm1.add(jmi11);jm1.add(jmi12);jmb.add(jm2);jm2.add(jmi21);jmb.add(jm3);jm1.addMenuListener(this);this.add(North,jmb);this.add(Center,jta);this.setVisible(true);public static void main(String a)new MLTest();public void menuCanceled(MenuEvent e)jta.setText(菜单被取消);public void menuSelected(MenuEvent e)jta.setText(不再选择);public void menuDeselected(MenuEvent e)jta.setText(被选中);图9-11说明:菜单在以面的内容进行讲解运行结果如9-2所示图9-129.2.5鼠标事件和鼠标移动事件鼠标事件只是鼠标5个状态点上的事件,鼠标移动是鼠标在移动过程中发生的事件。(一)MouseListener和MouseMotionListener中的方法 Public void mouseClicked(MouseEvente)鼠标按键在组件上单击(按下并释放)时调用。 Public void mouseEntered(MouseEvente)鼠标进入到组件上时调用。 Public void mouseExited(MouseEvente)鼠标离开组件时调用。 Public void mousePressed(MouseEvente)鼠标按键在组件上按下时调用。 Public void mouseReleased(MouseEvente)鼠标按钮在组件上释放时调用。 Public void mouseDragged(MouseEvente)鼠标按键在组件上按下并拖动时调用。 Public void mouseMoved(MouseEvente)鼠标光标移动到组件上但无按键按下时调用。(二)鼠标事件实现【例】鼠标事件的实现,程序名为MMLTest.java,程序代码如下示:package bedeck;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MMLTest extends JFrame implements MouseListener,MouseMotionListenerJPanel jp = new JPanel();String listenerContent = ;JTextArea jta = new JTextArea(文本域默认的内容,5,10);JLabel jb = new JLabel(在Jpanel中);public MMLTest()super(鼠标事件的实现);this.setSize(320 ,250);this.setLayout(new FlowLayout();jp.add(jb);jp.addMouseListener(this);jp.setSize(5, 30);jp.setBackground(Color.BLUE);jp.addMouseMotionListener(this);this.add(jp);this.add(jta);this.setVisible(true);public static void main(String a)new MMLTest();/* * 鼠标事件接口的实现 * */public void mouseClicked(MouseEvent e)listenerContent = 鼠标在该区域单击时:n+鼠标单击次数:+e.getClickCount()+鼠标事件字符串n;jta.setText(listenerContent); public void mouseEntered(MouseEvent e)listenerContent += listenerContent + 鼠标进入该组件区n;jta.setText(listenerContent);public void mouseExited(MouseEvent e)listenerContent += listenerContent + 鼠标离开该组件区n;jta.setText(listenerContent);public void mousePressed(MouseEvent e)listenerContent += listenerContent + 鼠标在该区域按下n;jta.setText(listenerContent);public void mouseReleased(MouseEvent e)listenerContent += listenerContent + 鼠标在该区域放开区n;jta.setText(listenerContent);/* * 鼠标移动事件接口的实现 * */public void mouseDragged(MouseEvent e)listenerContent += listenerContent + 鼠标按下在组件区域内移动n;jta.setText(listenerContent);public void mouseMoved(MouseEvent e)listenerContent += listenerContent + 鼠标悬浮在组件区域n;jta.setText(listenerContent);图9-13运行结果如9-14所示图9-149.2.6窗口事件窗口事件只有javax.swing.JWindow(java.awt.Window)类对象以及它的子类对象才可以产生,通常是发生在Window、Jwindow、Frame、JFrame、Dialog、Jdialog等类的对象上,WindowListener接口实现了最基本的窗口最大化、最小化、关闭等操作。(一)windowListener接口的方法 pubic void windowOpened(WindowEvent e)窗口被打开后调用 public void windowClosed(WindowEvent e)窗口被关闭后调用 public void windowClosing(WindowEvent e)窗口被关闭时调用 public void windowIconified(WindowEvent e)窗口被缩小为图标时调用 public void windowActivated(WindowEvent e)窗口激活被调用 public void windowDeiconified(WindowEvent e)窗口被复原时调用 public void windowDeactivated(WindowEvent e)窗口失去焦点时调用(二)WindowEvent对象常用的方法 Pubic int getNewState()对于 WINDOW_STATE_CHANGED 事件,返回新的窗口状态。 Public int getOldState()对于 WINDOW_STATE_CHANGED 事件,返回以前的窗口状态。 Public Window getOppositeWindow()返回在此焦点或活动性变化中所涉及的其他 Window。 Public Window getWindow()返回事件的发起方。 Public String paramString()返回标识此事件的参数字符串(三)窗口事件的实现【例】窗口事件的实现,程序名为WLTest.java,代码如下所示:package bedeck;import java.awt.event.*;import javax.swing.*;public class WLTest extends JFrame implements WindowListenerJTextArea jta = new JTextArea(窗口默认内容,15,7); /显示框架中事件状态String listenerContent = ; /统计哪个事件的发生/* * 构造方法 * */public WLTest()super(窗口事件的实现);this.setSize(320, 250);this.add(jta);this.addWindowListener(this);this.setVisible(true);/* * main()方法 * */public static void main(String a)new WLTest();/* * WindowListener接口的实现 * */public void windowClosing(WindowEvent e)System.exit(0);/返回操作系统,即关闭窗口listenerContent += listenerContent + 窗口关闭中n;jta.setText(listenerContent);public void windowOpened(WindowEvent e)listenerContent += listenerContent + 窗口第一次被打开n;jta.setText(listenerContent);public void windowClosed(WindowEvent e)listenerContent += listenerContent + 窗口关闭后n;jta.setText(listenerContent);public void windowIconified(WindowEvent e)listenerContent += listenerContent + 窗口大小从正常到最小n;jta.setText(listenerContent);public void windowDeiconified(WindowEvent e)listenerContent += listenerContent + 窗口大小从最小到正常时n;jta.setText(list

温馨提示

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

评论

0/150

提交评论