簡體   English   中英

錯誤MouseMotionListener,MouseListener

[英]error 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) {}
}

不讓您的GUI類實現偵聽器接口的另一個原因。 最好的解決方案不是執行此操作,而是使用擴展MouseAdapter的匿名內部類或執行相同操作的私有內部類。 否則,您會要求您的GUI做太多事情,並為將來可能出現的調試問題做好准備。

您需要添加

public void mouseMoved(MouseEvent) 

到AniWorld,或從已實現的接口列表中刪除“ MouseMotionListener”。

出現該錯誤的原因是,當您說實現接口時,必須為接口中的所有方法提供實現,否則您的類需要是抽象的。

因為要實現MouseMotionListener接口,所以您必須實現(或至少留空實現) MouseDragged(MouseEvent e)MouseMoved(MouseEvent e)

這里是MouseMotionListener的文檔

是的AniWorld,您必須重寫Interface的所有方法,這意味着如果要實現MouseListener,則必須重寫所有五個方法;如果要保留一個方法來重寫,則100%將會得到相同的錯誤...您正在實現這兩個偵聽器,因此您必須重寫,mouseCliked(),mouseEntered(),mouseExited(),mousePressed(),mouseReleased(),mouseDragged(),mouseMoved()

畢竟方法重寫您將成功而不會出現任何錯誤..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM