ошибка MouseMotionListener, MouseListener - PullRequest
0 голосов
/ 20 ноября 2011

Я получаю ошибку:

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) {}
}

Ответы [ 4 ]

2 голосов
/ 20 ноября 2011

Еще одна причина, по которой ваш класс GUI не реализует интерфейсы слушателя. Лучшее решение - не делать это, а использовать анонимный внутренний класс, который расширяет MouseAdapter, или закрытый внутренний класс, который делает то же самое. В противном случае вы просите ваш графический интерфейс сделать слишком много и настраиваетесь на возможные проблемы с отладкой в ​​будущем.

1 голос
/ 20 ноября 2011

Вы должны реализовать (или, по крайней мере, оставить пустую реализацию) методы MouseDragged(MouseEvent e) и MouseMoved(MouseEvent e), потому что вы реализуете интерфейс MouseMotionListener.

Здесь документация для MouseMotionListener

1 голос
/ 20 ноября 2011

Вам нужно добавить

public void mouseMoved(MouseEvent) 

В AniWorld или удалите MouseMotionListener из списка реализованных интерфейсов.

Причина, по которой вы получаете эту ошибку, состоит в том, что когда вы говорите, что реализуете интерфейс, вы должны предоставить реализации для всех методов в интерфейсе, или ваш класс должен быть абстрактным.

0 голосов
/ 24 мая 2013

Да AniWorld, Вы должны переопределить все методы интерфейса, то есть, если вы реализуете MouseListener, то вы должны переопределить все пять методов, и если вы оставляете один метод для переопределения, то 100% вы получите ту же ошибку ... вы реализуете оба слушателя, поэтому вы должны переопределить, mouseCliked (), mouseEntered (), mouseExited (), mousePressed (), mouseReleased (), mouseDragged (), mouseMoved ()

после переопределения всех методов вы пройдете без ошибок ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...