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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение пропорции JFreeChart? Координата растягивается, другая скролл 
:(
    Опции темы
_Y_
Дата 11.8.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Это я из отпуска вернулся smile 

Задача сохранить заданную пропорцию ширина-высота у графика, рисуемого в JFreeChart. А именно: график предполагается весьма длинный, гораздо больше ширины экрана. JFreeChart сам по себе растягивается под контейнер. Хотелось бы, чтобы растягивался он только по вертикали, а по горизонтали его размер изменялся пропорционально. При этом, естественно, нужна горизонтальная полоса прокрутки.

Два варианта вопроса:
1. Может есть стандартное решение?
2. Если нет стандартного, то я бы попробовал сделать так:
  • В центр внешнего контейнера с BorderLayout поместил бы JScrollPane, а внутрь JScrollPane положил бы ChartPanel.
  • Слушал бы изменение размера внешнего контейнера и принудительно  пересчитывал бы размеры ChartPanel.
Что думаете о таком решении и чем/как слушается изменение размеров JInternalFrame? Что-то я запутался как их слушать и потому это решение пока не попробовал.

ЗЫ: Собственно, задача, наверное более общая и может применяться к растяжению-прокрутке любого контейнера, а не только ChartPanel.


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


Вертилятор
***


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

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



Я бы сделал свой LayoutManager, который поддерживал бы только один компонент и в зависимости от настроек масштабировал бы его. Этот layout manager устанавливается затем в панель, туда же добавляется компонент, а затем эту панель в JScrollPane.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Real McCoy
Дата 12.8.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



w1nd, 
А где можно почитать, как сделать свой LayoutManager?

_Y_, 
По поводу работы с контейнерами ничего не скажу, т.к. такую задачу решать не пробовал, а теоретизировать опыта маловато smile

По поводу самого JFreeChart, в смысле сохранения его пропорций могу сказать, что недавно решал подобную задачу. Решение сводилось к тому, чтобы самостоятельно посчитать, в каких границах по X и Y надо отрисовывать график, после чего полученные значения устанавливались диаграмме:

Код

    JFreeChart chart = ChartFactory.createScatterPlot("", "X", "Y", dataset,
          PlotOrientation.VERTICAL, false, true, false);

    XYPlot plot = (XYPlot)chart.getPlot();

    // ...

    // Set chart boundaries (rangeMinX, rangeMaxX, rangeMinY, rangeMaxY).
    NumberAxis numberaxisX = (NumberAxis)plot.getDomainAxis();
    numberaxisX.setRange(rangeMinX, rangeMaxX);

    NumberAxis numberaxisY = (NumberAxis)plot.getRangeAxis();
    numberaxisY.setRange(rangeMinY, rangeMaxY);

    // ...


У меня, кстати, за счёт выставления границ ещё и зумирование сделано smile
PM MAIL   Вверх
_Y_
Дата 12.8.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



w1nd, а что свой LayoutManager должен делать? Что-то ничего в голову не приходит отличного от делаемого серединой BorderLAyout.


Real McCoy, Ваше решение вроде устанавливает граничные значения осей. Меня же установленные автоматически вполне устраивают. Нужно играть не с осями, а с размерами/растяжением всего изображения.


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


Вертилятор
***


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

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



Real McCoy, не знаю, где почитать. Я когда-то читал javadoc и исходники существующих layout'ов.
_Y_, такой layout должен только возвращать/устанавливать нужный размер ChartPanel. Чуть попозже постараюсь сделать пример, но не обещаю.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
_Y_
Дата 12.8.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



w1nd, спасибо. Это задача не срочная. Просто столкнулся с вопросом, на который не смог самому себе ответить.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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