免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2123 | 回复: 8
打印 上一主题 下一主题

小弟不才!问个事件共享问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-29 17:15 |只看该作者 |倒序浏览
我又一个jTextFiled,给其添加了一个KeyEvent事件
还有一个JBotton,给其添加了一个ActionEvent事件
现在是怎么让他们共享一个事件处理方法?
如谁知道,请赐教,不胜感激!

论坛徽章:
0
2 [报告]
发表于 2005-07-29 17:55 |只看该作者

小弟不才!问个事件共享问题!

事件是内置的,不用添加。添加的是EventListener。你可以用同一个eventListener来响应这两个事件。也可以让不同的eventlistener把处理的工作委托给同一个方法做。我觉得后一种方法好一些。

  1. import java.awt.AWTEvent;
  2. import java.awt.BorderLayout;
  3. import java.awt.Component;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.KeyAdapter;
  7. import java.awt.event.KeyEvent;

  8. import javax.swing.JButton;
  9. import javax.swing.JFrame;
  10. import javax.swing.JTextField;

  11. public class EventDelegate {

  12.         JFrame jf = null;

  13.         public EventDelegate() {
  14.                 jf = new JFrame();
  15.                 jf.setSize(300, 200);
  16.                 jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  17.                 jf.getContentPane().add(getButton(), BorderLayout.SOUTH);
  18.                 jf.getContentPane().add(getTextField(), BorderLayout.CENTER);
  19.         }

  20.         private Component getTextField() {
  21.                 JTextField jtf = new JTextField();
  22.                 jtf.addKeyListener(new KeyAdapter() {
  23.                         public void keyTyped(KeyEvent ke) {
  24.                                 handler(ke);
  25.                         }
  26.                 });
  27.                 return jtf;
  28.         }

  29.         protected void handler(AWTEvent e) {
  30.                 System.out.println(e);
  31.         }

  32.         private Component getButton() {
  33.                 JButton jb = new JButton("Click Me!");
  34.                 jb.addActionListener(new ActionListener() {

  35.                         public void actionPerformed(ActionEvent arg0) {
  36.                                 handler(arg0);
  37.                         }
  38.                 });
  39.                 return jb;
  40.         }

  41.         /**
  42.          * @param args
  43.          */
  44.         public static void main(String[] args) {
  45.                 EventDelegate ed = new EventDelegate();
  46.                 ed.test();
  47.         }

  48.         private void test() {
  49.                 jf.show();
  50.         }

  51. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-07-29 18:25 |只看该作者

小弟不才!问个事件共享问题!

谢了!我在研究一下!!可能还要问你

论坛徽章:
0
4 [报告]
发表于 2005-07-29 18:33 |只看该作者

小弟不才!问个事件共享问题!

好了!问题解决了!感谢ing!!!

论坛徽章:
0
5 [报告]
发表于 2005-08-02 10:22 |只看该作者

小弟不才!问个事件共享问题!

在问个问题!
因为需要,我点击一个按钮后,弹出一个对话框,而在这个对话框上面还有一个按钮,点击后又弹出一个对话框,当我用这个对话框上的事件关闭此对话框时,它的父对话框也关闭了!不知道怎么解决!!
不知道我描述的清楚不?还请斑竹帮忙呀~~

论坛徽章:
0
6 [报告]
发表于 2005-08-02 12:57 |只看该作者

小弟不才!问个事件共享问题!

加上这一条语句试一下了
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
我记得这样就行的,但还久没用了。

论坛徽章:
0
7 [报告]
发表于 2005-08-02 15:04 |只看该作者

小弟不才!问个事件共享问题!

我试了一下,不行!

论坛徽章:
0
8 [报告]
发表于 2005-08-02 15:19 |只看该作者

小弟不才!问个事件共享问题!

哦,对了,忘记告诉你,还要把弹出的那窗口的
addWindowListener(new WindowAdapter()
       {public void windowClosing(WindowEvent e)
            {setVisible(false);}   //不要写成System.exit(0);
        });
这样应该可以的。试一下了。

论坛徽章:
0
9 [报告]
发表于 2005-08-02 15:52 |只看该作者

小弟不才!问个事件共享问题!

谢谢你!
可以了!!其实主要我太粗心了!我在函数的最下面加了一个this.setVisible(false);当然父对话框也关了!现在才发现!~~
晕,麻烦大家了!
不过你说的也很有用!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP