2016-06-06 2 views
0

에서 앞쪽으로 이동되는에게 나는 아래의 스레드에서 설명하는 문제가있다 : 나는 여러 종류의마우스 휠의 TeeChart

Scroll chart with mouse wheel in TeeChart

I 설치 oficcial 사이트와 나는 정상적으로 실행의 예를 들어 자바 데모를 볼 수 있습니다 그래프 등.

문제는 TChart에 MouseWheelListener를 추가 할 수 없다는 것입니다. 위의 스레드에서 누군가 다음과 같이 대답했습니다. "다음 코드는 Eclipse의 TeeChart Java SWT에서 잘 작동합니다." 다른 사용자가
으로 주석을 달았습니다. "실제로 그 코드는 똑같습니다. 그러나 차트에 수동으로 초점을 맞추기 전까지는 작동하지 않습니다. "

모든 주먹 Eclipse의 답변에 제공된 코드는 Eclipse Indigo에서 작동하지 않습니다. 둘째, 대답이 주어진 이후로 lib가 어느 정도 변경되었으므로 더 이상 "mouseScrolled"이벤트가 없습니다. "mouseWheelMoved"라는 이벤트가 있습니다. 나는 내 인생에서이 사건을 해고 할 수 없었다.

의견, 예문, 의견을 보내 주시면 대단히 감사하겠습니다.

감사합니다.

예제 코드 :

JFrame frame = new Jframe(); 
JPanel contentPane; 
TChart tChart2 = new TChart(); 
tChart2.setGraphics3D(null); 
tChart2.setBounds(new Rectangle(6, 71, 572, 268)); 
// Mouse Wheel Listener 
tChart2.addMouseWheelListener(new MouseWheelListener() { 
     public void mouseWheelMoved(MouseWheelEvent e) { 
     // TODO Auto-generated method stub 
      System.out.println("mouseWheelMoved worked"); 
     } 
}); 
contentPane = (JPanel) frame.getContentPane(); 
contentPane.add(tChart2); 
+0

질문을해야합니다 ** 원하는 동작 **, ** 특정 문제 또는 오류 ** 및 ** 문제를 재현하는 데 필요한 가장 짧은 코드 **를 포함하십시오. 분명한 문제 설명이없는 질문은 다른 독자에게 유용하지 않습니다. 참조 : [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve). –

+0

원하는 behivour : MouseWheelMoved 이벤트 발생 그래서 내 문제가 명확합니다. 곧 재현 가능한 코드 예제를 추가하겠습니다. –

+0

@ShouRisha 'contentPane'유형은 무엇입니까? SWT를 쓰지 않고 Swing – Baz

답변

1

당신은 맞다. MouseWheel 이벤트는 SWT 용 TeeChart Java에서 시작되었지만 Swing 용 TeeChart Java에서는 발생하지 않았습니다.

공용 추적 장치 (here)에 추가했으며 이미 다음 유지 관리 릴리스를 위해 수정했습니다.

--- a/Swing/src/com/steema/teechart/TChart.java 
+++ b/Swing/src/com/steema/teechart/TChart.java 
@@ -21,6 +21,8 @@ import java.awt.Toolkit; 
import java.awt.datatransfer.*; 

import com.steema.teechart.events.FrameworkMouseEvent; 
+import com.steema.teechart.events.FrameworkMouseWheelEvent; 
+ 
import java.awt.event.*; 
import java.beans.*; 
import java.io.*; 
@@ -1405,7 +1407,16 @@ public class TChart extends JComponent implements Serializable, IChart, 
             e.getX(),e.getY(),e.getClickCount(), 
             true,e.getButton()); 
    } 
- 
+  
+ private FrameworkMouseWheelEvent getFrameworkEvent(MouseWheelEvent e) 
+ { 
+  return new FrameworkMouseWheelEvent(e.getComponent(), e.getID(), 
+           e.getWhen(), e.getModifiers(), 
+           e.getX(), e.getY(), e.getClickCount(), 
+           true, e.getScrollType(), 
+           e.getScrollAmount(), e.getWheelRotation()); 
+ } 
+  
    protected void processMouseEvent(MouseEvent e) { 
     chart.cancelMouse = false; 

@@ -1439,6 +1450,15 @@ public class TChart extends JComponent implements Serializable, IChart, 


    protected void processMouseWheelEvent(MouseWheelEvent e) { 
+  chart.cancelMouse = false; 
+  if (_allowMouse) { 
+   FrameworkMouseWheelEvent fwe = getFrameworkEvent(e); 
+   
+   if (!chart.cancelMouse) { 
+    super.processMouseWheelEvent(fwe); 
+   } 
+  } 
    } 

    private boolean _allowMouse = true; 
-- 

그리고 새로운 클래스 : 소스가있을 경우

은, 수정은 TChart.java에서 작은 변화의 몇 구성 FrameworkMouseWheelEvent.java : 도움을 구하고

package com.steema.teechart.events; 

import java.awt.Component; 

public class FrameworkMouseWheelEvent extends java.awt.event.MouseWheelEvent { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public FrameworkMouseWheelEvent(Component source, int id, long when, int modifiers, int x, int y, int clickCount, 
      boolean popupTrigger, int scrollType, int scrollAmount, int wheelRotation) { 
     super(source, id, when, modifiers, x, y, clickCount, popupTrigger, scrollType, scrollAmount, wheelRotation); 
    } 

    public FrameworkMouseWheelEvent(Component source, int id, long when, int modifiers, int x, int y, int xAbs, 
      int yAbs, int clickCount, boolean popupTrigger, int scrollType, int scrollAmount, int wheelRotation) { 
     super(source, id, when, modifiers, x, y, xAbs, yAbs, clickCount, popupTrigger, scrollType, scrollAmount, wheelRotation); 
    } 

    public FrameworkMouseWheelEvent(Component source, int id, long when, int modifiers, int x, int y, int xAbs, 
      int yAbs, int clickCount, boolean popupTrigger, int scrollType, int scrollAmount, int wheelRotation, 
      double preciseWheelRotation) { 
     super(source, id, when, modifiers, x, y, xAbs, yAbs, clickCount, popupTrigger, scrollType, scrollAmount, wheelRotation, 
       preciseWheelRotation); 
    } 
} 
+0

안녕하세요 @ 예 감사 솔루션을 게시 해 주셔서 감사합니다. 단지 데모 클래스 만 있습니다. 나는 소스 파일들로 libs를 찾을 것이다. 다시 한번 고마워. –

+0

@ShouRisha는 "steema.com에서의 판매"에 연락하여 패치 또는 테스트 버전을 제공하려고 노력할 것입니다. – Yeray

+0

감사합니다. 나는 steema에게 연락 할 것이다. 친애하는. –