Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / jfreeChart + jasper Задать позицию для серии / 1 сообщений из 1, страница 1 из 1
30.01.2015, 11:28
    #38867532
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jfreeChart + jasper Задать позицию для серии
Есть jasper-отчет с диаграммами. Диаграммы сделаны через визард JasperSoftStudio.
Для реализации желаемого вывода в jasper есть возможность использовать кастомизатор, который должен имплементить интерфейс
interface JRChartCustomizer
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public interface JRChartCustomizer {

	/**
	 * This method is called at fill time, before the chart is rendered.
 	 * @param chart the JFreeChart object, which can be accessed and modified
	 * @param jasperChart the JasperReports version of the chart, containing data that might be needed in
	 * customization
	 */
	public void customize(JFreeChart chart, JRChart jasperChart);

}



других возможностей подпилить ручками нет.

Я реализовал что-то примерно что мне надо
мой кастомайзер
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
  /**
   * Серии отрисовываются подряд(по порядку), в одном интервале не перекрывая друг-друга.
   * Для определения различного отображения на оси времени. Нужен так как для
   * Jasper метод customize не параметрируется
   * 
   * @param chart
   * @param jasperChart
   * @param format
   */
  protected void customize(JFreeChart chart, JRChart jasperChart, String format) {
    XYPlot plot = (XYPlot) chart.getPlot();
    XYBarRenderer barRenderer = new ClusteredXYBarRenderer();
    
    SimpleDateFormat sd = new SimpleDateFormat(format);
    
    ((DateAxis) chart.getXYPlot().getDomainAxis()).setDateFormatOverride(sd);
    
    barRenderer.setShadowVisible(false);
    
    XYItemLabelGenerator labelGenerator = new StandardXYItemLabelGenerator();
    
    barRenderer.setBaseItemLabelGenerator(labelGenerator);
    barRenderer.setBaseItemLabelsVisible(true);
    
    barRenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6,
        TextAnchor.BOTTOM_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2));
    
    barRenderer.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
        TextAnchor.TOP_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2));
    
    
    plot.setRenderer(barRenderer);
  }




Хотелось бы значения второй серии всегда отображать внизу (ниже нуля), а первой - всегда вверху. Разделить так сказать цифры, чтобы они не сливались друг с другом.
Управления выводом для серий не нашел, кажется его вообще нет...

Кто может подсказать что нибудь?


Текущий вывод получается такой:
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / jfreeChart + jasper Задать позицию для серии / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]