2012-03-14 8 views
1

MouseListener이 작동하지 않습니다. 왜? 난 당신이 영업 이익의 주석에 제공된 링크에 따르면 마우스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 ("Got here!")을 넣으십시오. –

+0

@Roy. 그래픽 창에서 마우스를 클릭해도 아무런 변화가 없습니다. 나는 당신이 제안한대로 콘솔에 아무 것도 인쇄되지 않으므로 mouseClicked 메서드가 호출되지 않을 것입니다. – Dana

답변

1

번째 클릭하면 아무 반응이 없습니다, 당신은 설명 말한다

addMouseListeners(); 

대신

addMouseListener(this); 

를 호출해야 : "임베디드 GCanvas 내에서 발생하는 마우스 이벤트의 리스너로 GraphicsProgram 자체를 사용합니다. 이렇게하려면 모든 학생이해야 할 리스너 메소드를 정의해야합니다 그는 응답해야하고 프로그램을 MouseListener 및 MouseMotionListener로 등록하는 addMouseListeners()를 호출해야합니다. "

다른 옵션을 사용하면 증상은 무엇인가, 그것은 작동하지 않습니다 말할 때

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

감사합니다! 이것은 효과가 있었다. – Dana

관련 문제