2011-11-19 53 views
0

我得到一個錯誤:錯誤的MouseMotionListener,MouseListener的

AniWorld is not abstract and does not override abstract method mouseMoved(MouseEvent) in MouseMotionListener 
public class AniWorld extends Applet implements MouseMotionListener, MouseListener 

的代碼是:

import java.awt.*; 
import java.lang.*; 
import java.applet.*; 
import java.net.*; 
import java.net.MalformedURLException; 
import java.applet.Applet.*; 
import java.io.IOException; 
import java.awt.event.*; 

public class AniWorld extends Applet implements MouseMotionListener, MouseListener 
{ 
public Stage  stage; 
GridBagLayout  layout; 
public void init() 
{ 
    addMouseMotionListener(this); 
    addMouseListener(this); 
    setBackground(Color.white); 
    layout = new GridBagLayout(); 
    setLayout(layout); 
    int width = Integer.parseInt(getParameter("width").trim()); 
    int height = Integer.parseInt(getParameter("height").trim()); 
    stage = new Stage(width-10,height-10); 
    constrain(stage,this,layout,1,0,1,6, 
       GridBagConstraints.NONE, 
       GridBagConstraints.CENTER,0,0); 

    stage.addBall(); 
    stage.addRect(); 
    stage.addArc(); 
    stage.start(); 
} 
public void start() 
{ 
    stage.start(); 
} // end of start() 



public static void constrain(
       Component  component, 
       Container  container, 
       GridBagLayout layout, 
       int   gridx, 
       int   gridy, 
       int   gridwidth, 
       int   gridheight, 
       int   fill, 
       int   anchor, 
       double  weightx, 
       double  weighty 
       ) { 

    GridBagConstraints gbc = new GridBagConstraints(); 

    gbc.gridx  = gridx; 
    gbc.gridy  = gridy; 
    gbc.gridwidth = gridwidth; 
    gbc.gridheight = gridheight; 
    gbc.fill  = fill; 
    gbc.anchor  = anchor; 
    gbc.weightx = weightx; 
    gbc.weighty = weighty; 

    layout.setConstraints(component,gbc); 

    container.add(component); 

    } // end of constrain() 

public void mouseEntered(MouseEvent e) {} 
public void mouseExited(MouseEvent e) {} 
public void mousePressed(MouseEvent e) {} 
public void mouseReleased(MouseEvent e) {} 
} 

回答

1

因爲您正在實現MouseMotionListener接口,所以您必須實施方法MouseDragged(MouseEvent e)MouseMoved(MouseEvent e)(或至少保留空白執行)。

這裏的文檔MouseMotionListener

+0

謝謝..... :) –

1

您需要添加

public void mouseMoved(MouseEvent) 

要AniWorld或刪除 '的MouseMotionListener'從已實現的接口列表。

你得到這個錯誤的原因是因爲當你說你實現一個接口時,你必須爲接口中的所有方法提供實現,或者你的類需要是抽象的。

2

另一個原因不要有你的GUI類實現偵聽器接口。最好的解決方案是不要這樣做,而是使用擴展MouseAdapter的匿名內部類或執行相同操作的私有內部類。否則,你會要求你的圖形用戶界面做得太多,並且正在設法解決將來可能出現的調試問題。

+0

因爲有點加密,但讓我認識+1 – mKorbel

0

是的AniWorld, 你必須重寫接口的所有方法,意思是如果你正在實現MouseListener,那麼你必須重寫所有五個方法,如果你留下一個方法來覆蓋,然後100%你會得到相同的錯誤。 (),mousePressed(),mouseReleased(),mouseDragged(),mouseMoved()

所有方法覆蓋你之後,你必須重寫這兩個監聽器,將成功沒有任何錯誤....