2016-03-29 32 views
0

マウスの動きを追跡しようとしていますが、MouseTracker.Handlerclassが抽象メソッドではなく、java.awtの抽象メソッドmouseExited(java.awt.event.MouseEvent)をオーバーライドしません。 event.MouseListenerのMouseListenerがある抽象メソッドのマウスイベントをオーバーライドする

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class MouseTracker extends JFrame{ 
    private JPanel board; 
    private JLabel message; 

    public MouseTracker(){ 
     super("Mouse Tracker"); 
     board = new JPanel(); 
     board.setBackground(Color.WHITE); 
     add(board, BorderLayout.CENTER); 

     message = new JLabel("No action preformed"); 
     add(message, BorderLayout.SOUTH); 

     Handlerclass handler = new Handlerclass(); 
     board.addMouseListener(handler); 
     board.addMouseMotionListener(handler); 
    } 

    private class Handlerclass implements MouseListener, MouseMotionListener{ 

     public void MousePressed(MouseEvent e){ 
      message.setText(String.format("The mouse was pressed, the current coordinates are: %d,%d", e.getX(), e.getY())); 
      board.setBackground(Color.RED); 
     } 

     public void MouseClicked(MouseEvent e){ 
      message.setText(String.format("The mouse was clicked, the current coordinates are: %d,%d", e.getX(), e.getY())); 
      board.setBackground(Color.BLUE); 
     } 

     public void MouseReleased(MouseEvent e){ 
      message.setText(String.format("The mouse was released, the current coordinates are: %d,%d", e.getX(), e.getY())); 
      board.setBackground(Color.GREEN); 
     } 

     public void MouseEntered(MouseEvent e){ 
      message.setText(String.format("The mouse has entered the board, the current coordinates are: %d,%d", e.getX(), e.getY())); 
      board.setBackground(Color.ORANGE); 
     } 

     public void MouseExited(MouseEvent e){ 
      message.setText(String.format("The mouse has exited the board, the current coordinates are: %d,%d", e.getX(), e.getY())); 
      board.setBackground(Color.YELLOW); 
     } 

     public void MouseDragged(MouseEvent e){ 
      message.setText(String.format("The mouse was dragged, the current coordinates are: %d,%d", e.getX(), e.getY())); 
      board.setBackground(Color.PINK); 
     } 
    } 

    public static void main (String[]args){ 
     MouseTracker run = new MouseTracker(); 
     run.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     run.setSize(400,400); 
     run.setVisible(true); 
    } 
} 
+1

インターフェイスのメソッド(およびJavaの原則として)は、小文字で始まります。 Javaでは大文字と小文字が区別されるため、 'MouseExited'メソッドで実装されていないエラーが発生します。 –

+0

メソッド名 'mouseExited'とあなたのメソッドを見てみましょう...' MouseExited'の違いを教えてください。 – 3kings

+1

@nbhuiya 'MouseMotionListener'のためにそのメソッドを実装する必要があります – 3kings

答えて

3

public interface MouseListener extends EventListener { 

/** 
* Invoked when the mouse button has been clicked (pressed 
* and released) on a component. 
*/ 
public void mouseClicked(MouseEvent e); 

/** 
* Invoked when a mouse button has been pressed on a component. 
*/ 
public void mousePressed(MouseEvent e); 

/** 
* Invoked when a mouse button has been released on a component. 
*/ 
public void mouseReleased(MouseEvent e); 

/** 
* Invoked when the mouse enters a component. 
*/ 
public void mouseEntered(MouseEvent e); 

/** 
* Invoked when the mouse exits a component. 
*/ 
public void mouseExited(MouseEvent e); 

}

だから、あなたはあなたの方法で間違ったケースを持って...彼らはロウで始まる必要がありますrケース。

+1

これは '' @ Override'''を使うのも良い考えです。それはあなたが実際にメソッドをオーバーライドさせるようにします。 –

関連する問題