Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JFreeChart: обработка событий мыши, JFreeChart: обработка событий мыши 
:(
    Опции темы
123qw
  Дата 3.4.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 12.6.2010

Репутация: нет
Всего: нет



Нашел в инете код:

Код

import java.awt.BasicStroke;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYStepRenderer;
import org.jfree.data.xy.*;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class XYStepRendererDemo1 extends ApplicationFrame {

    public XYStepRendererDemo1(String s) {
        super(s);
        JPanel jpanel = createdemoPanel();
        jpanel.setPreferredSize(new Dimension(500, 300));
        setContentPane(jpanel);
    }

    private static JFreeChart createChart(XYDataset xydataset) {
        JFreeChart jfreechart = ChartFactory.createXYLineChart("XYStepRenderer demo 1", "X", "Y", xydataset, PlotOrientation.VERTICAL, false, false, false);
        XYPlot xyplot = (XYPlot) jfreechart.getPlot();
        // следующие четыре строчки позволяют нарисовать ступеньки
        XYStepRenderer xysteprenderer = new XYStepRenderer();
        xysteprenderer.setStroke(new BasicStroke(2.0F));
        xysteprenderer.setDefaultEntityRadius(6);
        xyplot.setRenderer(xysteprenderer);
        return jfreechart;
    }

    private static XYDataset createDataset() {
        XYSeries xyseries1 = new XYSeries("Series 1");
        xyseries1.add(1.0D, 7D);
        xyseries1.add(2D, 6D);
        xyseries1.add(3D, 9D);
        xyseries1.add(4D, 5D);
        xyseries1.add(6D, 4D);
        XYSeriesCollection xyseriescollection = new XYSeriesCollection();
        xyseriescollection.addSeries(xyseries1);
        return xyseriescollection;
    }

    public static JPanel createdemoPanel() {
        JFreeChart jfreechart = createChart(createDataset());
        jfreechart = createChart(createDataset());
        ChartPanel cp = new ChartPanel(jfreechart);
        // это событие для того, что бы работало увеличение/уменьшение масштаба при помощи колесика мыши
        cp.setMouseWheelEnabled(true);
        return cp;
    }

    public static void main(String args[]) {
        XYStepRendererDemo1 xysteprendererdemo1 = new XYStepRendererDemo1("XYStepRenderer demo 1");
        xysteprendererdemo1.pack();
        RefineryUtilities.centerFrameOnScreen(xysteprendererdemo1);
        xysteprendererdemo1.setVisible(true);
    }
}




Хотелось бы:
  •  При прокрутке колесика мыши увеличение/уменьшение масштаба происходило только по оси Y
  •  Контекстное меню, вызываемое при нажатии на правую клавишу мыши исчезло, т.е. нельзя было бы его вызывать. Для правой клавиши мыши необходимо оставить лишь только выделение области на графике
  •  В этой теме нашел хорошее дизайнерское решение, а вот как его прикрутить к этому коду я не понимаю
  •  В программе будет несколько графиков, у которых ось Х, должна быть общей, т.е. если один график масштабирован, то и остальные тоже должны автоматически масштабировать, мое решение повесить наблюдателей. Вот только появляются некоторые проблемы:
       
    •  а) как получить координаты (верхнюю нижнюю границы) на оси X (координаты оси Y будут не лишними), которые сейчас отображаются на экране?
         
    •  b) как программно масштабировать график, задав верхнюю и нижнюю границы осей X и Y?
Возможно задумка реализации последнего пункта, недостаточно оптимальна, буду рад любым советам с точки зрения архитектуры.

Всем заранее спасибо
PM MAIL   Вверх
_Y_
Дата 3.4.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 1
Всего: 34



Я как-то пытался победить всплывающее меню JFreeChart. Собственно хотелось долезть до пункта "Save as..." и сохранять картинки програмно. Времени грохнул много, но его так и не хватило чтобы решить проблему.

Может не с того конца взялся, а может оно действительно очень глубоко запрятано.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
123qw
Дата 4.4.2011, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 12.6.2010

Репутация: нет
Всего: нет



По поводу меню, логично предположить, что необходимо переопределить какой-то метод (возможно, из ChartPanel) и можно будет отключить меню... если кто в курсе какой это метод, то, пожалуйста, поделитесь, или же если я неправильно думаю, то направьте по правильному направлению
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.