⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itemlabeldemo5.java

📁 jfreechart的例子教程附有源代码
💻 JAVA
字号:
/* -------------------
 * ItemLabelDemo5.java
 * -------------------
 * (C) Copyright 2006, by Object Refinery Limited and Contributors.
 *
 */

package demo;

import java.awt.Color;
import java.awt.Paint;
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.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DefaultDrawingSupplier;
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;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;

/**
 * A demo showing how to use the fallback position to force a wide name to be
 * displayed inside the bars in a stacked bar chart.
 */
public class ItemLabelDemo5 extends ApplicationFrame {

    /**
     * Creates a new demo instance.
     * 
     * @param title  the frame title.
     */
    public ItemLabelDemo5(String title) {
        super(title);
        JPanel chartPanel = createDemoPanel();
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
    }

    /** 
     * Creates a sample dataset. 
     * 
     * @return The dataset. 
     */
    public static CategoryDataset createDataset() {
        DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();

        categoryDataset.addValue(52.83, "Germany", "Western EU");
        categoryDataset.addValue(20.83, "France", "Western EU");
        categoryDataset.addValue(10.83, "Great Britain", "Western EU");
        categoryDataset.addValue(7.33, "Netherlands", "Western EU");
        categoryDataset.addValue(4.66, "Belgium", "Western EU");
        categoryDataset.addValue(57.14, "Spain", "Southern EU");
        categoryDataset.addValue(14.28, "Greece", "Southern EU");
        categoryDataset.addValue(14.28, "Italy", "Southern EU");
        categoryDataset.addValue(14.28, "Portugal", "Southern EU");
        categoryDataset.addValue(100.0, "Czech Republic", "Eastern EU");
        categoryDataset.addValue(66.66, "Denmark", "Scandinavia");
        categoryDataset.addValue(33.33, "Finland", "Scandinavia");
        categoryDataset.addValue(0, "", "Africa");
        categoryDataset.addValue(100.0, "Israel", "Asia");

        return categoryDataset;
    }

    /** 
     * Creates a chart. 
     * 
     * @param dataset  the dataset. 
     * 
     * @return The chart. 
     */
    private static JFreeChart createChart(CategoryDataset dataset) {
        JFreeChart chart = ChartFactory.createStackedBarChart(
                "Item Label Demo 5", null, null, dataset, 
                PlotOrientation.VERTICAL, false, true, false);

        chart.setBackgroundPaint(new Color(255, 255, 255));

        CategoryPlot plot = chart.getCategoryPlot();
        MyStackedBarRenderer renderer = new MyStackedBarRenderer();
        plot.setRenderer(renderer);

        ItemLabelPosition position = new ItemLabelPosition(
                ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 
                0.0);
        renderer.setPositiveItemLabelPositionFallback(position);
        renderer.setNegativeItemLabelPositionFallback(position);

        StandardCategoryItemLabelGenerator scilg 
            = new StandardCategoryItemLabelGenerator("{0}", 
                    NumberFormat.getInstance());
        renderer.setItemLabelGenerator(scilg);
        renderer.setItemLabelsVisible(true);

        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setUpperBound(100);
        return chart;
    }

    /** 
     * Creates a panel for the demo (used by SuperDemo.java). 
     * 
     * @return A panel. 
     */
    public static JPanel createDemoPanel() {
        JFreeChart chart = createChart(createDataset());
        return new ChartPanel(chart);
    }

    /** 
     * Starting point for the demonstration application. 
     * 
     * @param args  ignored. 
     */
    public static void main(String[] args) {

        ItemLabelDemo5 demo = new ItemLabelDemo5("Item Label Demo 5");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

    private static class MyStackedBarRenderer extends StackedBarRenderer {

        int oldColumn = -99;

        int count = 0;

        Paint[] list = DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE;

        public Paint getItemPaint(int row, int column) {

            if (oldColumn != column) {
                count = 0;
                oldColumn = column;
            } else
                count++;

            return list[count];
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -