Не может понять и устранить ошибки переопределения метода этой программы - PullRequest
1 голос
/ 11 марта 2012
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
public class test extends JFrame implements MouseListener
{
JFrame f;
JPanel p;
JButton b;
test()
{
    f=new JFrame("My Frame");
    p=new JPanel();
    f.add(p);
    b=new JButton("Button");
    p.add(b);
    f.setSize(100,100);
    f.setVisible(true);
    b.addMouseListener(new MouseListener()
    {
        public void mouseClicked(MouseEvent ae)
        {
            System.out.print("mouse clicked");
        }
    });
    b.addMouseListener(new MouseListener()
    {
        public void mouseEntered(MouseEvent ae)
        {
            System.out.print("mouse Entered");
        }
    });
    b.addMouseListener(new MouseListener()
    {
        public void mouseExited(MouseEvent ae)
        {
            System.out.print("mouse Exited");
        }
    });
    b.addMouseListener(new MouseListener()
    {
        public void mousePressed(MouseEvent ae)
        {
            System.out.print("mouse Pressed");
        }
    });
    b.addMouseListener(new MouseListener()
    {
        public void mouseReleased(MouseEvent ae)
        {
            System.out.print("mouse Released");
        }
    });
}
public static void main(String args[])
{
    new test();
}
}

Ошибки следующие:

--------------------Configuration: <Default>--------------------
C:\Users\SHUBHENDU\Documents\test.java:19: <anonymous test$1> is not abstract and      does not override abstract method mouseExited(java.awt.event.MouseEvent) in        java.awt.event.MouseListener
        {
        ^
C:\Users\SHUBHENDU\Documents\test.java:26: <anonymous test$2> is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener
        {
        ^
C:\Users\SHUBHENDU\Documents\test.java:33: <anonymous test$3> is not abstract and does not override abstract method mouseEntered(java.awt.event.MouseEvent) in java.awt.event.MouseListener
        {
        ^
C:\Users\SHUBHENDU\Documents\test.java:40: <anonymous test$4> is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener
        {
        ^
C:\Users\SHUBHENDU\Documents\test.java:47: <anonymous test$5> is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener
        {
        ^
5 errors

Ответы [ 4 ]

4 голосов
/ 11 марта 2012

Если у вас есть конкретный класс Java (неабстрактный класс), вы должны реализовать все методы интерфейса, если, конечно, ваш класс реализует этот интерфейс.Поэтому добавьте не реализованные методы из MouseListener интерфейса в ваш код.Но вы добавляете новую MouseListener к одной и той же кнопке каждый раз.Это не так, как он используется.Вы можете / должны реализовать все MouseListener методы в одном и том же теле кода. Удалить избыточные MouseListener дополнения к вашему JButton b.

2 голосов
/ 11 марта 2012

Если вы просто хотите переопределить один метод интерфейса MouseListener, вы можете использовать MouseAdapter следующим образом:

JButton button = new JButton("Click");
button.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("mouse was clicked");
    }
});
2 голосов
/ 11 марта 2012

Я не очень знаком с AWT, но, похоже, у вас есть неабстрактный класс (test), который не реализует абстрактные методы интерфейса (MouseListener).

http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

Вам необходимо реализовать:

mouseClicked(MouseEvent)    
mouseEntered(MouseEvent)
mouseExited(MouseEvent) 
mousePressed(MouseEvent)    
mouseReleased(MouseEvent)

Если бы ваш класс был абстрактным, вам не требовалось бы реализовывать эти методы (ответственность за это была бы на следующем неабстрактном подклассе).

1 голос
/ 11 марта 2012

Чтобы исправить эти ошибки ...

1) Remove "implements MouseListener"

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