JLabel是否具有mouseMotionListener的默认实现?

时间:2015-02-10 17:34:21

标签: java swing mousemotionlistener

我想询问JLabel has是否mouseMotionListener的默认实施。

我使用addAWTEventListener方法将Toolkit.getDefaultToolkit()MOUSE_MOTION_EVENT_MASK一起使用,以便运行时它能够知道鼠标是哪个控件。超过jButton, jFrame, jTextfield一切正常,但是JLabel,JPanel和其他人都没有。

如果我添加JLabel上面的代码

lblNewLabel_1.addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseMoved(MouseEvent e) {
        }
    });

它有效。

我必须添加类似于现在没有MouseMotionListener的所有控件的内容吗?

1 个答案:

答案 0 :(得分:0)

  public class something implements MouseMotionListener{    

      public something(){
        button.addMouseMotionListener(this);
        frame.addMouseMotionListener(this);
        panel.addMouseMotionListener(this);
        JTextField.addMouseMotionListener(this);          
      }   

//MouseMotionListener methods

     @Override
     public void mouseDragged(MouseEvent e) {    
        // TODO Auto-generated method stub          
    }

    @Override
    public void mouseMoved(MouseEvent e) {    
        // TODO Auto-generated method stub          
    }     
}

是的,如果您希望他们采取行动,您必须添加mouseOrMotion侦听器或动作侦听器

当您想要将JLabel添加到窗口时,不要直接添加它,而是首先将JLabel添加到JPanel,然后添加到window.add(面板)。 原因 JLabel是轻量级组件和 JFrame重量级,可能会给听众带来很多问题。

如果这还不够,请告诉我......