0

왜 처음에는 chartMouseClicked (JFreeChart 라이브러리)가 작동하고 이미 mouseClicked 되었습니까?chartMouseListener 및 MouseListener

boolean isDoubleClicked = false; 
chartPanel.addMouseListener(new MouseListener() { 
     @Override 
     public void mouseClicked(MouseEvent me) { 
      if (me.getClickCount() == 2 &&) { 
       isDoubleClicked = true; 
      } 
     } 
     @Override 
     public void mousePressed(MouseEvent me) {} 
     @Override 
     public void mouseReleased(MouseEvent me) {} 
     @Override 
     public void mouseEntered(MouseEvent me) {} 
     @Override 
     public void mouseExited(MouseEvent me) {} 
    }); 



chartPanel.addChartMouseListener(new ChartMouseListener() { 
     @Override 
     public void chartMouseClicked(ChartMouseEvent cme) { 
      if (isDoubleClicked) 
       System.out.println("Double clicked!"); 
     } 
     @Override 
     public void chartMouseMoved(ChartMouseEvent cme) {} 
    }); 

따라서 System.out.println("Double clicked!");이 작동하지 않습니다. 그것을 고치는 방법?

답변

1

다른 청취자 개체가 두 개 있습니다. 하나는 MouseListener 인스턴스 (패널에서 마우스 이벤트를 수신함)이고 다른 하나는 ChartMouseListener 인스턴스 (패널의 차트에서 마우스 이벤트를 수신 대기)입니다. 이들은 별도의 리스너 목록에 등록되며 한 객체의 isDoubleClicked 필드는 다른 객체에 표시되지 않습니다.

ChartMouseListenerMouseListener과 다른 이유는 JFreeChart이 마우스 포인터의 아래에있는 차트에서 엔터티에 대한 추가 정보를 포함하는 자체 이벤트를 만드는 것입니다.

+0

나는 모든 정보를'MouseListener'에 추가하고'ChartMouseListener'에서 제거하기로 결정했습니다. 충고에 감사하다! – Denis