2012-03-14 12 views
1

私はこのMouseListenerを動作させることができません。どうして?私はあなたがOPのコメントにあるリンクによると、マウスMouseListenerが応答しません

import acm.program.*; 
import acm.graphics.*; 
import java.awt.event.*; 

/** Draws an oval whenever the user clicks the mouse */ 
public class DrawOvals extends GraphicsProgram implements MouseListener { 
    public void run() { 
    addMouseListener(this); 
    } 

    public void mouseClicked(MouseEvent e) { 
    GOval oval = new GOval(100,100,OVAL_SIZE, OVAL_SIZE); 
    oval.setFilled(true); 
    add(oval, e.getX(), e.getY()); 
    System.out.println("Got here!"); 
    } 

    /* Private constants */ 
    private static final double OVAL_SIZE = 20; 

    /* implements the required methods for mouse listener*/ 
    public void mouseEntered(MouseEvent arg0) { 
    // TODO Auto-generated method stub 
    } 

    public void mouseExited(MouseEvent arg0) { 
    // TODO Auto-generated method stub 
    } 
} 
+2

を使用することで、症状は何ですか? – Alvin

+0

mouseClickedメソッドが呼び出されますか?表示するメソッドにSystem.out.println( "ここに!")を入れてみてください。 @ RoI。 –

+0

グラフィックスウィンドウでマウスをクリックすると、何も起こりません。私はあなたが提案したように、何もコンソールに何も表示されないので、mouseClickedメソッドが呼び出されていないと思います。 – Dana

答えて

1

番目のクリックしたときに何も起こりません、あなたは説明が言う

addMouseListeners(); 

代わりの

addMouseListener(this); 

を呼び出す必要があります: "埋め込まれたGCanvas内で発生するマウスイベントのリスナーとしてGraphicsProgram自体を使用します。これを行うには、すべての生徒が行う必要があります。彼はプログラムに応答してから、addMouseListeners()を呼び出すと、プログラムはMouseListenerとMouseMotionListenerの両方として登録されます。

他のオプションは、それが動作しないと言うとき

GCanvas canvas = getGCanvas(); 
canvas.addMouseListener(this); 
+0

ありがとう!これはうまくいった。 – Dana

関連する問題