2010-06-30 3 views

ответ

5

Расширение StandardXYItemLabelGenerator часто полезный подход, но входящий в комплект поставки constructors может быть достаточно. Для этого генератора, то MessageFormatArgumentIndex значения соответствуют названию серии, домен и диапазон.

NumberFormat format = NumberFormat.getNumberInstance(); 
format.setMaximumFractionDigits(2); // etc. 
XYItemLabelGenerator generator = 
    new StandardXYItemLabelGenerator("{0} {1} {2}", format, format); 
renderer.setBaseItemLabelGenerator(generator); 
renderer.setBaseItemLabelsVisible(true); 

Кроме того, вы можете контролировать отдельные серии маркировки с

renderer.setSeriesItemLabelsVisible(true); 
+0

См. Также этот [пример] (http://stackoverflow.com/a/8932920/230513) для 'StandardCategoryToolTipGenerator'. – trashgod

1

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

XYPlot plot = (XYPlot) chart.getPlot(); 
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); 
renderer.setBaseItemLabelsVisible(true); 
+0

Спасибо за ответ. Я попробовал это, но он все еще появился. Есть ли что-нибудь еще, что мне, вероятно, нужно делать раньше? Может быть, назначить ярлыки для каждого сюжета? – rmartinus

+0

Я думаю, что получил его сейчас. Я создал свой собственный генератор ярлыков элементов под названием «LegendXYItemLabelGenerator (..)» и получил его для работы. В дополнение к «renderer.setBaseItemLabelsVisible (true)», я добавил «renderer.setBaseItemLabelGenerator (новый LegendXYItemLabelGenerator (plot.getLegendItems())); – rmartinus

+0

Возможно ли это на 'XYAreaRenderer'? Я пытаюсь заставить его работать, и я могу для 'XYLineAndShapeRenderer', но тот же код не работает для' XYAreaRenderer'. ' – skaz

7

Вот заказ ярлык генератор, который я создал:

public class LegendXYItemLabelGenerator extends StandardXYItemLabelGenerator 
     implements XYItemLabelGenerator, Cloneable, PublicCloneable, 
     Serializable { 
    private LegendItemCollection legendItems; 

    public LegendXYItemLabelGenerator(LegendItemCollection legendItems) { 
     super(); 
     this.legendItems = legendItems; 
    } 

    @Override 
    public String generateLabel(XYDataset dataset, int series, int item) { 
     LegendItem legendItem = legendItems.get(series); 
     return legendItem.getLabel(); 
    } 
} 

, а затем я добавил этот код в дополнение к @ код Guilaume в:

renderer.setBaseItemLabelsVisible(true); 
renderer.setBaseItemLabelGenerator(new LegendXYItemLabelGenerator(plot.getLegendItems())); 

и вот результат:

alt text

+0

+1 для хорошего примера. Я предложил альтернативный подход в другом ответе. – trashgod

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