多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 12.6 实例1 ### 12.6.1 概述 在第一个实例中,目的就是当当条目的值大于某个限定的值时,就显示该标签。如图12.3所示。 ![](https://box.kancloud.cn/2016-01-23_56a34085be17e.png) 如图12.3 超过某个限定值显示条目标签的实例 做到这一点并不困难,需要做以下工作: + 写一个实现接口CategoryItemLabelGenerator的类,并且实现generateItemLabel()方法。该方法实现如果条目的值小于限定值时,返回null。 + 创建该类的实例,将该实例使用renderer的方法setLabelGenerator()设置到renderer中去。 ### 12.6.2 源代码 ``` package demo; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.AbstractCategoryItemLabelGenerator; import org.jfree.chart.labels.CategoryItemLabelGenerator; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.labels.StandardXYItemLabelGenerator; import org.jfree.chart.labels.XYItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class ItemLabelDemo1 extends ApplicationFrame { static class LabelGenerator extends AbstractCategoryItemLabelGenerator implements CategoryItemLabelGenerator { private double threshold; public LabelGenerator(double d) { super("", NumberFormat.getInstance()); threshold = d; } public String generateLabel(CategoryDataset categorydataset, int i, int i_0_) { String string = null; Number number = categorydataset.getValue(i, i_0_); if (number != null) { double d = number.doubleValue(); if (d > threshold) string = number.toString(); } return string; } } public ItemLabelDemo1(String string) { super(string); CategoryDataset categorydataset = createDataset(); JFreeChart jfreechart = createChart(categorydataset); ChartPanel chartpanel = new ChartPanel(jfreechart); chartpanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartpanel); } private static CategoryDataset createDataset() { DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); defaultcategorydataset.addValue(11.0, "S1", "C1"); defaultcategorydataset.addValue(44.3, "S1", "C2"); defaultcategorydataset.addValue(93.0, "S1", "C3"); defaultcategorydataset.addValue(35.6, "S1", "C4"); defaultcategorydataset.addValue(75.1, "S1", "C5"); return defaultcategorydataset; } private static JFreeChart createChart(CategoryDataset categorydataset) { JFreeChart jfreechart = ChartFactory.createBarChart( "Item Label Demo 1", "Category", "Value", categorydataset, PlotOrientation.VERTICAL, false, true, false); jfreechart.setBackgroundPaint(Color.white); CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); categoryplot.setBackgroundPaint(Color.lightGray); categoryplot.setDomainGridlinePaint(Color.white); categoryplot.setRangeGridlinePaint(Color.white); NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); numberaxis.setUpperMargin(0.15); return jfreechart; } public static JPanel createDemoPanel() { JFreeChart jfreechart = createChart(createDataset()); return new ChartPanel(jfreechart); } public static void main(String[] strings) { ItemLabelDemo1 itemlabeldemo1 = new ItemLabelDemo1("Item Label Demo 1"); itemlabeldemo1.pack(); RefineryUtilities.centerFrameOnScreen(itemlabeldemo1); itemlabeldemo1.setVisible(true); } } ```