快速业务通道

用JavaMail显示复合邮件的内容 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
用、判断行为可用的状态、设置和取得行为的一些属性,最后两个方法用来允许其他对象在行动对象的属性发生变化后得到通知。

通常我们使用一个实现了Action接口的大部分方法的抽象类AbstractAction类作为基类,重载actionPerformed方法以实现我们的行为。

我们用一个例子来具体说明如何进行实际的操作。

首先编写一个具体的行为,对指定的键盘事件进行处理:

public class TextAction extends AbstractAction {   private String a;   public TextAction(String a)   { this.a = a; }    public void actionPerformed(ActionEvent parm1)    {     String b = parm1.getActionCommand(); //得到行为的命令字符串     System.out.println("command="+b);     System.out.println("prompt="+this.a);    }   }

Java Swing中的键盘事件处理(2)

时间:2010-12-19

建立四个TextAction对象:

TextAction whenFocusSon = new TextAction("focus son"); TextAction whenFocusFather = new TextAction("focus father"); TextAction window = new TextAction("window"); TextAction ancestor = new TextAction("ancestor");

随后,在一个窗体中加入两个面板,名为sonPanel和parentPanel,使得parentPanel是sonPanel的祖先。并在sonPanel中加入一个名为son的button,在parentPanel中加入名为parent的button。在fatherPanel外加入几个button。

得到son组件的三个InputMap,并创建一个名为focusFatherIm的InputMap,使得这个InputMap成为focusIm的parent:

//get default inputMap (when focus inputmap) and set a parent InputMap focusIm = son.getInputMap(); focusFatherIm = new InputMap(); focusIm.setParent(focusFatherIm); //get WHEN_ANCESTOR_OF_FOCUSED_COMPONENT inputMap ancestorIm = son.getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); //get WHEN_IN_FOCUSED_WINDOW inputMap windowIm = son.getInputMap(WHEN_IN_FOCUSED_WINDOW); 在这些InputMap中分别加入键盘绑定: focusIm.put(KeyStroke.getKeyStroke(''f''),"actionFocusSon"); focusFatherIm.put(KeyStroke.getKeyStroke(''F''),"actionFocusFather"); ancestorIm.put(KeyStroke.getKeyStroke(''a''),"actionAncestor"); windowIm.put(KeyStroke.getKeyStroke(''w''),"actionWindow"); 得到son组件的缺省的ActionMap,并将已经建立的行为与特定的对象(字符串)进行绑定: am = son.getActionMap(); am.put("actionFocusSon",whenFocusSon); am.put("actionFocusFather",whenFocusFather); am.put("actionAncestor",ancestor); am.put("actionWindow",window);

运行程序及其相应结果:

1, 单击son按钮,这时如果按下''f'',''F'',''a'',''w'',程序均会有相应的输出。这是因为,此时的焦点在son按钮上,而son按钮组件的三个InputMap都是有效的。所以他们对应的事件都会发生。

2, 单击parent按钮,这时按下''w'',程序会有相应的输出。而按下''f'',''F'',''a'',程序没有反应。这是因为parent按钮具有焦点,这个按钮不是son按钮的祖先,而son所在的窗口具有焦点,所以只有组件所在窗口具有焦点的InputMap是有效的。

3, 单击其他的按钮(parentPanel外的按钮),这时按下''w'',程序会有相应的输出。而按下''f'',''F'',''a'',程序没有反应。这是因为这些按钮具有焦点,他们不是son按钮的祖先,而son所在的窗口具有焦点,所以只有组件所在窗口具有焦点的InputMap是有

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号