2013-08-30 20 views
1

我已將MouseMotionListener添加到Component,約有5位以上的父母。當我設置主要JWindowsetVisible(true);,然後立即mouseMoved(MouseEvent e)方法生成一個事件。之後,一切正常。它可能是一些錯誤?爲什麼當組件設置爲可見時,MouseMotionListener的mouseMoved方法會生成事件?

一些解決方案是可能的:

public class SomeClass extends Component{ 

    private int mouseMoveCount; 

    public SomeClass(){ 

    addMouseMotionListener(new MouseMotionAdapter() { 
       @Override 
       public void mouseMoved(MouseEvent e) { 

        if (mouseMoveCount > 1) { 
         //Do something 
         mouseMoveCount = 0; 
        } 
        mouseMoveCount++; 
       } 
      }); 
    } 
} 

jWindow.setVisible(true);validate();pack();後進行。鼠標,當然坐在地方,我不要去碰它:)但它仍然會產生一個事件..

+0

如果您分享代碼,這將有所幫助。 :) – JNL

+0

我不認爲這是一個錯誤。一般來說,你應該在組件渲染後添加監聽器。 – Kon

+0

我找到了一些解決方案,但我不喜歡它。 –

回答

0

終於找到了原因 - 設置爲可見之前,我被分派MouseEventMouseEvent.MOUSE_ENTERED)到ComponentMouseListener - 這是一個失誤。但有意思的是,派發此事件也觸發了mouseMoved

相關問題