2016-06-06 8 views
0

я проблему, описанную в следующей теме:колесо мыши двигались не обжигают в TeeChart

Scroll chart with mouse wheel in TeeChart

Я установки пример Java демо от oficcial сайта и я бегу это нормально, я могу видеть различные типы график и т. д.

Проблема: я не могу добавить MouseWheelListener в TChart. В приведенном выше сообщении кто-то ответил так: «Следующий код отлично подходит для меня с 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

Желаемый объект: стрельба из MouseWheelMoved событие Итак, моя проблема понятна. Я приведу пример воспроизводимого кода в ближайшее время. –

+0

@ShouRisha Какой тип 'contentPane'? Похоже, вы не используете SWT, а скорее Swing – Baz

ответ

1

Вы правы. Событие MouseWheel было запущено в TeeChart Java для SWT, но не было в TeeChart Java для Swing.

Я добавил его в общедоступный трекер (here) и уже исправил его для следующего выпуска обслуживания.

Для тех источников, исправление состоит на пару небольших изменений в TChart.java:

--- 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; 
-- 

И новый класс: 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

Привет, @Yeray Спасибо, разместив решение. У меня есть только демо-классы в баночках. Я буду искать libs с исходными файлами. Еще раз спасибо. –

+0

@ShouRisha свяжитесь с «sales at steema dot com», и мы постараемся предоставить патч или тестовую версию. – Yeray

+0

Спасибо. Я свяжусь с steema. С наилучшими пожеланиями. –

 Смежные вопросы

  • Нет связанных вопросов^_^