2012-03-11 46 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