2012-03-11 47 views
1
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 
+2

没有关系,但你的类名称应该大写,以免与方法混淆。 '公共课测试' – jmort253 2012-03-11 07:02:59

回答

4

如果您有一个具体的Java类(非抽象类),您必须实现接口所有的方法,当然如果您的类实现了该接口。 所以添加未实现的方法MouseListener接口到您的代码。但是,您每次都在同一个按钮上添加一个新的MouseListener。这不是它被使用的方式。您可以/应该在同一个代码体中实施所有MouseListener方法。 删除冗余MouseListener添加到您的JButton b

+0

thanx为你的帮助:)) – desprado 2012-03-11 07:15:15

2

我没那么熟悉AWT但现在看来,你有一个非抽象类( test),它没有实现接口的抽象方法(MouseListener)。

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

您需要实现:

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

如果您类是抽象的,你就不会被要求实施这些方法(举证责任将是对未来非抽象子这样做)。

2

如果你只是想重写MouseListener接口的一个方法,你可以使用MouseAdapter如下:

JButton button = new JButton("Click"); 
button.addMouseListener(new MouseAdapter() { 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     System.out.println("mouse was clicked"); 
    } 
}); 
+0

thanx好友它也有帮助:) – desprado 2012-03-11 07:35:22

1

要修复这些错误......

1) Remove "implements MouseListener" 

2) Change MouseListener to MouseAdapter