2012-11-15 2 views
0

나는 여러 클래스로 구성된 자바 프로그램을 가지고 있습니다.자바 - 트리거 된 mouseEvent의 이름을 얻으십시오

이제는 클래스의 Java 프로그램 인터페이스를 만들었습니다. 몇 가지 버튼을 정의했습니다.

이 내가 응용 프로그램 클래스의 버튼에 마우스 리스너를 추가하는 방법입니다

내가 다른 사람의 사이에 포함는 DrawingCanvas라는 다른 클래스, 마우스 이벤트 핸들러의 번호를 가지고있다. 이러한 이벤트 핸들러 중 하나는 mousePressed입니다.

의 mousePressed의 문제는 이러한 "Button_Square", "Button_Rectangle"등이이이 버튼은 응용 프로그램 클래스에서 선언 된 때문에 같은 버튼 이름을 인식하지 않는 것입니다 : 여기의 mousePressed의 코드는 DrawingCanvas 클래스가 아닙니다.

마우스 이벤트를 트리거 한 버튼의 이름을 어떻게 얻을 수 있습니까? 버튼이 선언 된 클래스가 mouselisteners 및 mousemotionlisteners를 구현하는 클래스와 같지 않음을 잊지 마십시오. 감사합니다 :)

+1

방금 ​​8 개의 DrawingCanvas를 만들었습니까? – dashrb

+0

Erm .. 마우스 수신기와 마우스 동작 수신기를 추가 할 때 실수가있을 수 있음을 알고 있습니다. 구성 요소에 mouselistener를 어떻게 추가합니까? 이러한 모든 리스너는 DrawingCanvas 클래스에 있습니다. – Matthew

+0

DrawingCanvas 클래스의 메서드를 차례로 호출하는 각 버튼에 대한 디스패처 클래스를 작성해야합니다. – XORcist

답변

1

8 개의 다른 리스너를 만들려면 JButton으로 구분하십시오.

Button_Square.addMouseListener(new DrawingCanvas(Button_Square)); 
Button_Square.addMouseMotionListener(new DrawingCanvas(Button_Square)); 

Button_Rectangle.addMouseListener(new DrawingCanvas(Button_Rectangle)); 
Button_Rectangle.addMouseMotionListener(new DrawingCanvas(Button_Rectangle)); 

Button_Circle.addMouseListener(new DrawingCanvas(Button_Circle)); 
Button_Circle.addMouseMotionListener(new DrawingCanvas(Button_Circle)); 

Button_Triangle.addMouseListener(new DrawingCanvas(Button_Triangle)); 
Button_Triangle.addMouseMotionListener(new DrawingCanvas(Button_Triangle)); 
2

처음에는 하나의 DrawingCanvas를 만들어 응용 프로그램 클래스의 필드로 만들 수 있습니다. 여기 나는 그것을 canvas이라고 부를 것이다. 당신의 모든 버튼은 다른 일을하면 지금, 당신은 그들에게 모든 다른있는 MouseListener를 제공 할 수 있습니다 : 등등

Button_Rectangle.addMouseListener(new MouseListener() 
{ 
    public void mousePressed(MouseEvent e) 
    { 
      if(!e.isControlDown()) 
      { 
       canvas.Shapes.add(new Rectangle(e.getX(), e.getY())); 
      } 
    } 
    //handle other events, or don't directly implement MouseListener 

}); 

Buuton_Circle.addMouseListener(new MouseListener() 
{ 
    public void mousePressed(MouseEvent e) 
    { 
      if(!e.isControlDown()) 
      { 
       canvas.Shapes.add(new Circle(e.getX(), e.getY())); 
      } 
    } 
    //handle other events, or don't directly implement MouseListener 

}); 

...

를 다른 개체를 사용하여 원인을 파악 할 필요가 없습니다.

관련 문제