我已经设置了custombarrenderer3d.setItemLabelsVisible(true);还应该怎么设置?

解决方案 »

  1.   

    这是源代码:
    package demo;import java.awt.*;
    import java.text.NumberFormat;
    import javax.swing.JPanel;
    import org.jfree.chart.*;
    import org.jfree.chart.annotations.CategoryTextAnnotation;
    import org.jfree.chart.axis.CategoryAnchor;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    import org.jfree.chart.plot.*;
    import org.jfree.chart.renderer.category.BarRenderer3D;
    import org.jfree.chart.renderer.category.CategoryItemRenderer;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.*;public class BarChart3DDemo4 extends ApplicationFrame
    {
        static class CustomBarRenderer3D extends BarRenderer3D
        {        public Paint getItemPaint(int i, int j)
            {
                CategoryDataset categorydataset = getPlot().getDataset();
                double d = categorydataset.getValue(i, j).doubleValue();
                if(d >= 0.69999999999999996D)
                {
                    return Color.green;
                } else
                {
                    return Color.red;
                }
            }        public CustomBarRenderer3D()
            {
            }
        }
        public BarChart3DDemo4(String s)
        {
            super(s);
            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(77D, "Series 1", "四月");
            defaultcategorydataset.addValue(93D, "Series 1", "五月");
            defaultcategorydataset.addValue(58D, "Series 1", "六月");
    //       defaultcategorydataset.addValue(0.75D, "Series 1", "Ellen");
    //      defaultcategorydataset.addValue(0.63D, "Series 1", "Jack");
            defaultcategorydataset.addValue(94D, "Series 1", "七月");
            defaultcategorydataset.addValue(70D, "Series 1", "八月");
            defaultcategorydataset.addValue(65D, "Series 1", "九月");
            return defaultcategorydataset;
        }    private static JFreeChart createChart(CategoryDataset categorydataset)
        {
            JFreeChart jfreechart = ChartFactory.createBarChart3D("四月至九月", "月份", "人数", categorydataset, PlotOrientation.VERTICAL, false, true, false);
            CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
            categoryplot.setBackgroundPaint(Color.white);
            
            CustomBarRenderer3D custombarrenderer3d = new CustomBarRenderer3D();
            
            
            
    //        CategoryItemRenderer categoryitemrenderer = categoryplot.getRenderer();
    //        categoryitemrenderer.setItemLabelsVisible(true);
            ValueMarker valueer = new ValueMarker(0.69999999999999996D, new Color(100, 200, 255), new BasicStroke(1.0F), new Color(200, 200, 255), new BasicStroke(1.0F), 1.0F);
            categoryplot.addRangeMarker(valueer, Layer.BACKGROUND);
            custombarrenderer3d.setItemLabelPaint(Color.GREEN);
            custombarrenderer3d.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
            custombarrenderer3d.setItemLabelFont(new Font("黑体",Font.PLAIN,12));
            custombarrenderer3d.setItemLabelsVisible(true);
            
            custombarrenderer3d.setMaximumBarWidth(0.050000000000000003D);
            categoryplot.setRenderer(custombarrenderer3d);
            CategoryTextAnnotation categorytextannotation = new CategoryTextAnnotation("", "Robert", 0.70999999999999996D);
    //        CategoryTextAnnotation categorytextannotation = new CategoryTextAnnotation();
            categorytextannotation.setCategoryAnchor(CategoryAnchor.START);
            categorytextannotation.setFont(new Font("SansSerif", 0, 12));
            categorytextannotation.setTextAnchor(TextAnchor.BOTTOM_LEFT);
            categoryplot.addAnnotation(categorytextannotation);
            NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
      //      numberaxis.setNumberFormatOverride(NumberFormat.getPercentInstance());
            numberaxis.setNumberFormatOverride(NumberFormat.getNumberInstance());
            
            
            
            
            return jfreechart;
        }    public static JPanel createDemoPanel()
        {
            JFreeChart jfreechart = createChart(createDataset());
            return new ChartPanel(jfreechart);
        }    public static void main(String args[])
        {
            BarChart3DDemo4 barchart3ddemo4 = new BarChart3DDemo4("3D Bar Chart Demo 4");
            barchart3ddemo4.pack();
            RefineryUtilities.centerFrameOnScreen(barchart3ddemo4);
            barchart3ddemo4.setVisible(true);
        }
    }
      

  2.   

    还应该设计柱子的最小宽度,否则有可能宽度太小而显示不出数据
    eg:  
    ....     
    BarRenderer3D renderer1=new BarRenderer3D();
           renderer1.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer1.setItemLabelFont(new Font("黑体",Font.PLAIN,12));
             renderer1.setItemLabelsVisible(true);//显示每个柱子上的数据
    renderer1.setMinimumBarLength(1.0);
    ...
      

  3.   

    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    String sql  = "SELECT...";
    .
    .
    .ResultSet rs= ...;
    try 
    {
    while(rs.next())
    {
    float f = rs.getFloat("...");
    String str= rs_.getString("date");
    dataset.addValue(f, "1", str);
    }
    }
    catch (Exception ex)
    {
    ex.printStackTrace();
    }
    JFreeChart chart = ChartFactory.createBarChart3D("营业收入统计图", 
                      "日    期",
                      "营业金额",
                      dataset,
                      PlotOrientation.VERTICAL,
                      false,
                      false,
                      false);

    JDBCCategoryDataset data = new JDBCCategoryDataset();
    ChartPanel chartPanel =new ChartPanel(chart);
    chartPanel.setChart(chart);