package jdepend.framework.ui.graph.creater; import java.awt.Font; import jdepend.framework.ui.graph.model.GraphDataItem; import org.jfree.chart.ChartColor; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.StackedBarRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; public final class BarCreater extends AbstractChartCreater { @Override public JFreeChart create(GraphDataItem item) { return createChart(item, createDataset(item)); } @Override public String getType() { return GraphDataItem.BAR; } private static CategoryDataset createDataset(GraphDataItem item) { DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); for (Object name : item.getDatas().keySet()) { defaultcategorydataset.addValue((Float) item.getDatas().get(name), "Series 1", (String) name); } return defaultcategorydataset; } private static JFreeChart createChart(GraphDataItem item, CategoryDataset categorydataset) { JFreeChart jfreechart = ChartFactory.createStackedBarChart(item.getTitle(), item.getLineXName(), item.getLineYName(), categorydataset, PlotOrientation.VERTICAL, true, true, false); Font font = new Font("宋体", Font.PLAIN, 13); jfreechart.getTitle().setFont(font); jfreechart.getLegend().setItemFont(font); CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); categoryplot.getDomainAxis().setTickLabelFont(font); categoryplot.getDomainAxis().setLabelFont(font); categoryplot.getDomainAxis().setCategoryLabelPositions( CategoryLabelPositions.createUpRotationLabelPositions(0.392D)); categoryplot.getRangeAxis().setTickLabelFont(font); categoryplot.getRangeAxis().setLabelFont(font); categoryplot.setBackgroundPaint(ChartColor.WHITE); StackedBarRenderer stackedbarrenderer = (StackedBarRenderer) categoryplot.getRenderer(); stackedbarrenderer.setDrawBarOutline(false); stackedbarrenderer.setBaseItemLabelsVisible(true); stackedbarrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); // int index = 0; // for (Object name : item.getDatas().keySet()) { // stackedbarrenderer // .setSeriesPaint(categorydataset.getRowIndex((String) name), COLORS[index % COLORS.length]); // index++; // // } return jfreechart; } }