快速业务通道

Merlin的魔力: 动态事件监听器代理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
于文本显示的 JLabel 组件。在 JTextField 中的按 Return 键时,生成一个 ActionEvent ,并且标签的文字变为 JTextField 中的内容。

清单 4. 展示 create(Class, Object, String, String)

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.beans.*; public class TextFieldHandler extends JFrame {   public TextFieldHandler() {    super("Selection");    setDefaultCloseOperation(EXIT_ON_CLOSE);    JTextField text = new JTextField();    JLabel label = new JLabel();    Container contentPane = getContentPane();    contentPane.add(text, BorderLayout.NORTH);    contentPane.add(label, BorderLayout.CENTER);    text.addActionListener(     (ActionListener)EventHandler.create(      ActionListener.class,    label,    "text",    "source.text")    );   }   public static void main(String args[]) {    JFrame frame = new TextFieldHandler();    frame.setSize(200, 150);    frame.show();   } }

图 2 显示了这个程序的外观。在文本字段中输入文字并按 Return 键。这会使 ActionListener 产生 EventHandler.create(ActionListener.class, label, "text", "source.text") 调用,其中 source.text 表明要得到事件源的 text 属性,直接映射到 label.setText((JTextField(event.getSource())).getText()) 代码。

图 2. 处理文本字段输入

Merlin的魔力: 动态事件监听器代理 - 编程入门网

Merlin的魔力: 动态事件监听器代理(4)

时间:2011-02-02 IBM John Zukowski

使用 create(Class, Object, String, String, String)

最后一种版本的 create() 是将另外两种方法结合在一起使用,对于在其他调用中没有的参数,则传递 null 。其他版本的 create() 要求您对所有监听器接口方法做同样的事情,这最后一种方法让您可以指定对每一种监听器方法调用不同的操作。所以,对于一个 MouseListener ,您可以为 mousePressed() 调用一种操作,为 mouseReleased() 调用另一种操作、还可以为 mouseClicked() 调用其他的操作。清单 5 展示了最后一种版本的 create() ,它只有用于鼠标按下/释放事件的两种简单的打印方法:

清单 5. 展示 create(Class, Object, String, String, String)

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.beans.*; public class MouseHandler extends JFrame {   public MouseHandler() {    super("Press and Release Mouse");    setDefaultCloseOperation(EXIT_ON_CLOSE);    Container contentPane = getContentPane();    contentPane.addMouseListener(     (MouseListener)EventHandler.create(      MouseListener.class,      this,      "pressed",      "point",      "mousePressed")    );    contentPane.addMouseListener(     (MouseListener)EventHandler.create(      MouseListener.class,      this,      "released",      "point",      "mouseReleased")    );   }   public void pressed(Point p) {    System.out.println("Pressed at: " + p);   }   public void released(Point p) {    System.out.println("Released at: " + p);   }   public static void main(String args[]) {    JFrame frame = new MouseHandler();    frame.setSize(400, 40

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号