2011-07-06 133 views
1
f.addMouseMotionListener(new MouseAdapter() { 
    public void mouseDragged(MouseEvent e) 
    { 
     String s="Mouse dragging :X = "+e.getX()+" Y= "+e.getY(); 
     tf.setText(s); 
    } 
    }); 

我看,我們不能實例化抽象類的對象......但在這裏,我們正在創造 new MouseAdapter() ..can有人能解釋它是如何與這些匿名classes..thank沒有做。我們可以創建對象到接口和抽象類嗎?

回答

0

你沒有看到,這並不意味着它不會發生。只需從代碼中使用新的MouseAdapter()來構造一個對象。但是,如果你試圖讀取.class文件的內容,你會發現,內部類的名稱, 通常的情況是,

class MouseAdapter$1 extends MouseAdapter 

直到這一點,你應該清楚的事情了。 :)

3

您沒有創建MouseAdapter的實例,您正在創建一個匿名類的實例,該實例繼承自MouseAdapter

更冗長,這可能已被寫入:

class Goo extends MouseAdapter { public void mouseDragged(){...} }; 

f.addMouseMotionListener(new Goo()); 
相關問題