我做一个继承自JPanel的类,在这个类里有加了一个方法,代码如下:
    public JButton getEMainBtn() {
        if (emailBtn == null) {
            // Create an action to add to the Context Menu
            final MouseListener action = new MouseListener() {                public void mouseClicked(MouseEvent e) {
                    if (e.getClickCount() == 2) {
                        // 双击
                    } else if (e.getClickCount() == 1) {
                        // 单击
                    }
                }                public void mousePressed(MouseEvent e) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }                public void mouseReleased(MouseEvent e) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }                public void mouseEntered(MouseEvent e) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }                public void mouseExited(MouseEvent e) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
            };
            emailBtn = new JButton();
            emailBtn.setOpaque(false); // 设置组件透明
            emailBtn.setBorder(null);
            emailBtn.setIcon(SparkRes.getImageIcon(SparkRes.MAIL_16x16));
            emailBtn.addMouseListener(action);
        }
        return emailBtn;
    }
其实也很简单,这个方法就是返回一个按钮,这个方法是在继承自JPanel的那个类的构造函数里执行的。add(getEMainBtn(), new GridBagConstraints(index++, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 0), 0, 0));现在的问题是这个按钮是显示出来了,但当用户鼠标点击的时候按钮的事件却没有执行。那位大侠遇到过这个问题的请指教指教。

解决方案 »

  1.   

    没有问题,把那些throw new UnsupportedOperationException("Not supported yet.");去掉。它们可能阻止了Event的传递。
      

  2.   


    我去掉了那些throw,就OK了。~
      

  3.   

    去掉了也不管用呀,是不是有其他问题导致了事件的不执行。这个按钮是加到 JPanel上去了,后来这个JPanel又被加一个 JList上去了,嵌了好几套,而且JList上也加了MouseListener事件。
      

  4.   

    那你给的代码不够多了,我把你的button加到一个JFrame上是没有问题的。
      

  5.   

    你这个button有没有addActionListener啊???
      

  6.   

    JList的CellRenderer和CellEditor的鼠标事件处理是不一样的。
    你这样加得自己去实现CellRender和CellEditor,然后分别处理里面的事件。
      

  7.   

    我在debug的时候用 btn.getMouseListeners() 取到这个按钮,发现按钮上有两个 MouseListener,是不是外面一个MouseListener影响了我的MouseListener的执行?
      

  8.   

    笨方法alert("test");一步一步检查,看执行到哪里了
      

  9.   

    第一:把 new MouseListener 改成 new MouseAdapter 然后把那些 Unsupport之类的全部删掉,只留下
    mouseClicked就可以了。第二:你说的点击没反应指的是单击、双击还是都没反应。
      

  10.   

    我觉得这和 JList 是不是有很大的关系。
      

  11.   

    我测试的,一个控件放两个Listener,一个有前述问题,另一个肯定受影响,不管注册次序先后。
    容器中有前述问题的,对其中控件不产生影响。看来你的首要问题是查为什么有两个Listener。
      

  12.   

    JList 控件里可以添加按钮吗?我觉得是不是因为这个控件不能添加按钮的原因呀?
      

  13.   

    button的点击处理一般放在ActionListener里面处理
      

  14.   

    throw new UnsupportedOperationException("Not supported yet.");
    阻止咯程序的继续执行