legendtitle.java

来自「JfreeChart 常用图表例子」· Java 代码 · 共 549 行 · 第 1/2 页

JAVA
549
字号
/* =========================================================== * JFreeChart : a free chart library for the Java(tm) platform * =========================================================== * * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. * * Project Info:  http://www.jfree.org/jfreechart/index.html * * This library is free software; you can redistribute it and/or modify it  * under the terms of the GNU Lesser General Public License as published by  * the Free Software Foundation; either version 2.1 of the License, or  * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public  * License for more details. * * You should have received a copy of the GNU Lesser General Public License  * along with this library; if not, write to the Free Software Foundation,  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc.  * in the United States and other countries.] *  * ---------------- * LegendTitle.java * ---------------- * (C) Copyright 2002-2005, by Object Refinery Limited. * * Original Author:  David Gilbert (for Object Refinery Limited); * Contributor(s):   -; * * $Id: LegendTitle.java,v 1.20 2005/05/19 15:44:59 mungady Exp $ * * Changes * ------- * 25-Nov-2004 : First working version (DG); * 11-Jan-2005 : Removed deprecated code in preparation for 1.0.0 release (DG); * 08-Feb-2005 : Updated for changes in RectangleConstraint class (DG); * 11-Feb-2005 : Implemented PublicCloneable (DG); * 23-Feb-2005 : Replaced chart reference with LegendItemSource (DG); * 16-Mar-2005 : Added itemFont attribute (DG); * 17-Mar-2005 : Fixed missing fillShape setting (DG); * 20-Apr-2005 : Added new draw() method (DG); * 03-May-2005 : Modified equals() method to ignore sources (DG); * 13-May-2005 : Added settings for legend item label and graphic padding (DG); *  */package org.jfree.chart.title;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Paint;import java.awt.geom.Rectangle2D;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import org.jfree.chart.LegendItem;import org.jfree.chart.LegendItemCollection;import org.jfree.chart.LegendItemSource;import org.jfree.chart.block.Arrangement;import org.jfree.chart.block.Block;import org.jfree.chart.block.BlockContainer;import org.jfree.chart.block.BorderArrangement;import org.jfree.chart.block.CenterArrangement;import org.jfree.chart.block.ColumnArrangement;import org.jfree.chart.block.FlowArrangement;import org.jfree.chart.block.LabelBlock;import org.jfree.chart.block.RectangleConstraint;import org.jfree.chart.event.TitleChangeEvent;import org.jfree.io.SerialUtilities;import org.jfree.ui.RectangleAnchor;import org.jfree.ui.RectangleEdge;import org.jfree.ui.RectangleInsets;import org.jfree.ui.Size2D;import org.jfree.util.PaintUtilities;import org.jfree.util.PublicCloneable;/** * A chart title that displays a legend for the data in the chart. * <P> * The title can be populated with legend items manually, or you can assign a * reference to the plot, in which case the legend items will be automatically * created to match the dataset(s). */public class LegendTitle extends Title                          implements Cloneable, PublicCloneable, Serializable {    /** For serialization. */    private static final long serialVersionUID = 2644010518533854633L;        /** The default item font. */    public static final Font DEFAULT_ITEM_FONT         = new Font("SansSerif", Font.PLAIN, 12);    /** The sources for legend items. */    private transient LegendItemSource[] sources;        /** The background paint (possibly <code>null</code>). */    private transient Paint backgroundPaint;        /** The edge for the legend item graphic relative to the text. */    private RectangleEdge legendItemGraphicEdge;        /** The anchor point for the legend item graphic. */    private RectangleAnchor legendItemGraphicAnchor;        /** The legend item graphic location. */    private RectangleAnchor legendItemGraphicLocation;        /** The padding for the legend item graphic. */    private RectangleInsets legendItemGraphicPadding;    /** The item font. */    private Font itemFont;        /** The padding for the item labels. */    private RectangleInsets itemLabelPadding;    /**     * A container that holds and displays the legend items.     */    private BlockContainer items;        private Arrangement hLayout;        private Arrangement vLayout;        /**      * An optional container for wrapping the legend items (allows for adding     * a title or other text to the legend).      */    private BlockContainer wrapper;    /**     * Constructs a new (empty) legend for the specified source.     *      * @param source  the source.     */    public LegendTitle(LegendItemSource source) {        this(source, new FlowArrangement(), new ColumnArrangement());    }        /**     * Creates a new legend title with the specified arrangement.     *      * @param source  the source.     * @param hLayout  the horizontal item arrangement (<code>null</code> not     *                 permitted).     * @param vLayout  the vertical item arrangement (<code>null</code> not     *                 permitted).     */    public LegendTitle(LegendItemSource source,                        Arrangement hLayout, Arrangement vLayout) {        this.sources = new LegendItemSource[] {source};        this.items = new BlockContainer(hLayout);        this.hLayout = hLayout;        this.vLayout = vLayout;        this.backgroundPaint = null;          this.legendItemGraphicEdge = RectangleEdge.LEFT;        this.legendItemGraphicAnchor = RectangleAnchor.CENTER;        this.legendItemGraphicLocation = RectangleAnchor.CENTER;        this.legendItemGraphicPadding = new RectangleInsets(2.0, 2.0, 2.0, 2.0);        this.itemFont = DEFAULT_ITEM_FONT;        this.itemLabelPadding = new RectangleInsets(2.0, 2.0, 2.0, 2.0);    }        /**     * Returns the legend item sources.     *      * @return The sources.     */    public LegendItemSource[] getSources() {        return this.sources;       }        /**     * Sets the legend item sources.     *      * @param sources  the sources.     */    public void setSources(LegendItemSource[] sources) {        this.sources = sources;        notifyListeners(new TitleChangeEvent(this));    }    /**     * Returns the background paint.     *      * @return The background paint (possibly <code>null</code>).     */    public Paint getBackgroundPaint() {        return this.backgroundPaint;       }        /**     * Sets the background paint for the legend.     *      * @param paint  the paint (<code>null</code> permitted).     */    public void setBackgroundPaint(Paint paint) {        this.backgroundPaint = paint;       }        /**     * Returns the location of the shape within each legend item.      *      * @return The location (never <code>null</code>).     */    public RectangleEdge getLegendItemGraphicEdge() {        return this.legendItemGraphicEdge;    }        /**     * Sets the location of the shape within each legend item.     *      * @param edge  the edge (<code>null</code> not permitted).     */    public void setLegendItemGraphicEdge(RectangleEdge edge) {        if (edge == null) {            throw new IllegalArgumentException("Null 'edge' argument.");        }        this.legendItemGraphicEdge = edge;    }        /**     * Returns the legend item graphic anchor.     *      * @return The graphic anchor (never <code>null</code>).     */    public RectangleAnchor getLegendItemGraphicAnchor() {        return this.legendItemGraphicAnchor;    }        /**     * Sets the anchor point used for the graphic in each legend item.     *      * @param anchor  the anchor point (<code>null</code> not permitted).     */    public void setLegendItemGraphicAnchor(RectangleAnchor anchor) {        if (anchor == null) {            throw new IllegalArgumentException("Null 'anchor' point.");        }        this.legendItemGraphicAnchor = anchor;    }        /**     * Returns the legend item graphic location.     *      * @return The location (never <code>null</code>).     */    public RectangleAnchor getLegendItemGraphicLocation() {        return this.legendItemGraphicLocation;    }        /**     * Sets the legend item graphic location.     *      * @param anchor  the anchor (<code>null</code> not permitted).     */    public void setLegendItemGraphicLocation(RectangleAnchor anchor) {        this.legendItemGraphicLocation = anchor;    }        /**     * Returns the padding used for the legend item graphics.     *      * @return The padding.     */    public RectangleInsets getLegendItemGraphicPadding() {        return this.legendItemGraphicPadding;   

⌨️ 快捷键说明

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