我想问下。
有什么办法 能让整个JFRAME里所有的组件  都能监听到的事件?我在JFRAME里的一个JBUTTON上添加个监听事件 
我运行 可以实现
我在JFRAME里在添加一个 JBUTTON上添加事件
第一个JBUTTON事件则运行不了我想问下  有没有什么办法?不管焦点在哪   都能执行那个键盘监听事件? 

解决方案 »

  1.   

    可以用if语句试试
    比如
        public void actionPerformed(ActionEvent e){
     
                  if(e.getSource()==btn1||btn2....){
                       ......
                     }
      

  2.   

    让JFRAME实现你想监听的Listener
    然后JFRAME上的所有组件都add这个Listener
      

  3.   

    1楼的不行2楼的
    你说让位把每个都实现addListener
    那垃圾代码不就N多吗?
      

  4.   

    1楼的可以啊,只要你把所有想监听这个事件的组件都add这个Listener.
    然后在那个Listener中去实现你想要的功能
      

  5.   

    回lz 只要JFRAME实现Listener
    JFRAME上的组件只需要addListener(this)就好了
    总不能不加监听就要响应事件吧?
      

  6.   

    只要JFRAME加上Listener
    然后在 所有的组件上加上 addListener(this)
    就能实现所有的事件了?我感觉可行。。谢谢。。分给你了
      

  7.   

    you should add listener to each one you want
    you can do as this simply.void addListenerToAll(Container c) {
        try {
            Method m = c.getClass().getDeclaredMethod("addActionListener", new Class[]{ActionListener.class});
            if (m != null) {
                c.addActionListener(your_listener);
            }
            Compoents[] cc = c.getComponents();
            for (int i=0; i<cc.length; i++) {
                if (cc[i] instancof Container) {
                    addListenerToAll(cc[i]);
                    continue;
                } 
                m = cc[i].getClass().getDeclaredMethod("addActionListener", new Class[]{ActionListener.class});
                if (m != null) {
                    cc[i].addActionListener(your_listener);
                }        
            }
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }call the method as this
    addListenerToAll(your_frame);
      

  8.   

    wunan320 
    你的那个方法。。我做不了
    能麻烦你写个例子吗?