marker.java

来自「JfreeChart 常用图表例子」· Java 代码 · 共 517 行

JAVA
517
字号
/* =========================================================== * 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.] * * ----------- * Marker.java * ----------- * (C) Copyright 2002-2005, by Object Refinery Limited. * * Original Author:  David Gilbert (for Object Refinery Limited); * Contributor(s):   Nicolas Brodu; * * $Id: Marker.java,v 1.10 2005/06/01 10:46:27 mungady Exp $ * * Changes (since 2-Jul-2002) * -------------------------- * 02-Jul-2002 : Added extra constructor, standard header and Javadoc  *               comments (DG); * 20-Aug-2002 : Added the outline stroke attribute (DG); * 02-Oct-2002 : Fixed errors reported by Checkstyle (DG); * 16-Oct-2002 : Added new constructor (DG); * 26-Mar-2003 : Implemented Serializable (DG); * 21-May-2003 : Added labels (DG); * 11-Sep-2003 : Implemented Cloneable (NB); * 05-Nov-2003 : Added checks to ensure some attributes are never null (DG); * 11-Feb-2003 : Moved to org.jfree.chart.plot package, plus significant API  *               changes to support IntervalMarker in plots (DG); * 14-Jun-2004 : Updated equals() method (DG); * 21-Jan-2005 : Added settings to control direction of horizontal and  *               vertical label offsets (DG); * 01-Jun-2005 : Modified to use only one label offset type - this will be  *               applied to the domain or range axis as appropriate (DG); * */package org.jfree.chart.plot;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.awt.Paint;import java.awt.Stroke;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import org.jfree.io.SerialUtilities;import org.jfree.ui.LengthAdjustmentType;import org.jfree.ui.RectangleAnchor;import org.jfree.ui.RectangleInsets;import org.jfree.ui.TextAnchor;import org.jfree.util.ObjectUtilities;/** * The base class for markers that can be added to plots to highlight a value  * or range of values. */public abstract class Marker implements Cloneable, Serializable {    /** For serialization. */    private static final long serialVersionUID = -734389651405327166L;    /** The paint. */    private transient Paint paint;    /** The stroke. */    private transient Stroke stroke;        /** The outline paint. */    private transient Paint outlinePaint;    /** The outline stroke. */    private transient Stroke outlineStroke;    /** The alpha transparency. */    private float alpha;    /** The label. */    private String label = null;    /** The label font. */    private Font labelFont;    /** The label paint. */    private transient Paint labelPaint;    /** The label position. */    private RectangleAnchor labelAnchor;        /** The text anchor for the label. */    private TextAnchor labelTextAnchor;    /** The label offset from the marker rectangle. */    private RectangleInsets labelOffset;        /**      * The offset type for the domain or range axis (never <code>null</code>).      */    private LengthAdjustmentType labelOffsetType;        /**     * Creates a new marker with default attributes.     */    protected Marker() {        this(Color.gray);    }    /**     * Constructs a new marker.     *     * @param paint  the paint (<code>null</code> not permitted).     */    protected Marker(Paint paint) {        this(            paint, new BasicStroke(0.5f), Color.gray,             new BasicStroke(0.5f), 0.80f        );    }    /**     * Constructs a new marker.     *     * @param paint  the paint (<code>null</code> not permitted).     * @param stroke  the stroke (<code>null</code> not permitted).     * @param outlinePaint  the outline paint (<code>null</code> permitted).     * @param outlineStroke  the outline stroke (<code>null</code> permitted).     * @param alpha  the alpha transparency.     */    public Marker(Paint paint, Stroke stroke,                   Paint outlinePaint, Stroke outlineStroke,                   float alpha) {        if (paint == null) {            throw new IllegalArgumentException("Null 'paint' argument.");        }        if (stroke == null) {            throw new IllegalArgumentException("Null 'stroke' argument.");        }                this.paint = paint;        this.stroke = stroke;        this.outlinePaint = outlinePaint;        this.outlineStroke = outlineStroke;        this.alpha = alpha;                this.labelFont = new Font("SansSerif", Font.PLAIN, 9);        this.labelPaint = Color.black;        this.labelAnchor = RectangleAnchor.TOP_LEFT;        this.labelOffset = new RectangleInsets(3.0, 3.0, 3.0, 3.0);        this.labelOffsetType = LengthAdjustmentType.CONTRACT;        this.labelTextAnchor = TextAnchor.CENTER;            }    /**     * Returns the paint.     *     * @return The paint (never <code>null</code>).     */    public Paint getPaint() {        return this.paint;    }        /**     * Sets the paint.     *      * @param paint  the paint (<code>null</code> not permitted).     */    public void setPaint(Paint paint) {        if (paint == null) {            throw new IllegalArgumentException("Null 'paint' argument.");        }        this.paint = paint;    }    /**     * Returns the stroke.     *     * @return The stroke (never <code>null</code>).     */    public Stroke getStroke() {        return this.stroke;    }        /**     * Sets the stroke.     *      * @param stroke  the stroke (<code>null</code> not permitted).     */    public void setStroke(Stroke stroke) {        if (stroke == null) {            throw new IllegalArgumentException("Null 'stroke' argument.");        }        this.stroke = stroke;    }    /**     * Returns the outline paint.     *     * @return The outline paint (possibly <code>null</code>).     */    public Paint getOutlinePaint() {        return this.outlinePaint;    }        /**     * Sets the outline paint.     *      * @param paint  the paint (<code>null</code> permitted).     */    public void setOutlinePaint(Paint paint) {        this.outlinePaint = paint;    }    /**     * Returns the outline stroke.     *     * @return The outline stroke (possibly <code>null</code>).     */    public Stroke getOutlineStroke() {        return this.outlineStroke;    }        /**     * Sets the outline stroke.     *      * @param stroke  the stroke (<code>null</code> permitted).     */    public void setOutlineStroke(Stroke stroke) {        this.outlineStroke = stroke;    }    /**     * Returns the alpha transparency.     *     * @return The alpha transparency.     */    public float getAlpha() {        return this.alpha;    }        /**     * Sets the alpha transparency.     *      * @param alpha  the alpha transparency.     */    public void setAlpha(float alpha) {        this.alpha = alpha;    }    /**     * Returns the label (if <code>null</code> no label is displayed).     *     * @return The label (possibly <code>null</code>).     */    public String getLabel() {        return this.label;    }    /**     * Sets the label (if <code>null</code> no label is displayed).     *     * @param label  the label (<code>null</code> permitted).     */    public void setLabel(String label) {        this.label = label;    }    /**     * Returns the label font.     *     * @return The label font (never <code>null</code>).     */    public Font getLabelFont() {        return this.labelFont;    }    /**     * Sets the label font.     *     * @param font  the font (<code>null</code> not permitted).     */    public void setLabelFont(Font font) {        if (font == null) {            throw new IllegalArgumentException("Null 'font' argument.");        }        this.labelFont = font;    }    /**     * Returns the label paint.     *     * @return The label paint (never </code>null</code>).     */    public Paint getLabelPaint() {        return this.labelPaint;    }    /**     * Sets the label paint.     *     * @param paint  the paint (<code>null</code> not permitted).     */    public void setLabelPaint(Paint paint) {        if (paint == null) {            throw new IllegalArgumentException("Null 'paint' argument.");        }        this.labelPaint = paint;    }    /**     * Returns the label anchor.     *     * @return The label anchor (never <code>null</code>).     */    public RectangleAnchor getLabelAnchor() {        return this.labelAnchor;    }    /**     * Sets the label anchor.     *     * @param anchor  the anchor (<code>null</code> not permitted).     */    public void setLabelAnchor(RectangleAnchor anchor) {        if (anchor == null) {            throw new IllegalArgumentException("Null 'anchor' argument.");        }        this.labelAnchor = anchor;    }    /**     * Returns the label offset.     *      * @return The label offset (never <code>null</code>).     */    public RectangleInsets getLabelOffset() {        return this.labelOffset;    }        /**     * Sets the label offset.     *      * @param offset  the label offset (<code>null</code> not permitted).     */    public void setLabelOffset(RectangleInsets offset) {        if (offset == null) {            throw new IllegalArgumentException("Null 'offset' argument.");        }        this.labelOffset = offset;    }        /**     * Returns the label offset type.     *      * @return The type (never <code>null</code>).     */    public LengthAdjustmentType getLabelOffsetType() {        return this.labelOffsetType;       }        /**     * Sets the label offset type.     *      * @param adj  the type (<code>null</code> not permitted).     */    public void setLabelOffsetType(LengthAdjustmentType adj) {        if (adj == null) {            throw new IllegalArgumentException("Null 'adj' argument.");        }        this.labelOffsetType = adj;        }            /**     * Returns the label text anchor.     *      * @return The label text anchor (never <code>null</code>).     */    public TextAnchor getLabelTextAnchor() {        return this.labelTextAnchor;    }        /**     * Sets the label text anchor.     *      * @param anchor  the label text anchor (<code>null</code> not permitted).     */    public void setLabelTextAnchor(TextAnchor anchor) {        if (anchor == null) {             throw new IllegalArgumentException("Null 'anchor' argument.");        }        this.labelTextAnchor = anchor;    }        /**     * Tests the marker for equality with an arbitrary object.     *      * @param obj  the object (<code>null</code> permitted).     *      * @return A boolean.     */    public boolean equals(Object obj) {        if (obj == this) {            return true;        }        if (!(obj instanceof Marker)) {            return false;        }        Marker that = (Marker) obj;        if (!ObjectUtilities.equal(this.paint, that.paint)) {            return false;           }        if (!ObjectUtilities.equal(this.stroke, that.stroke)) {            return false;        }        if (!ObjectUtilities.equal(this.outlinePaint, that.outlinePaint)) {            return false;           }        if (!ObjectUtilities.equal(this.outlineStroke, that.outlineStroke)) {            return false;        }        if (this.alpha != that.alpha) {            return false;        }        if (!ObjectUtilities.equal(this.label, that.label)) {            return false;        }        if (!ObjectUtilities.equal(this.labelFont, that.labelFont)) {            return false;        }        if (!ObjectUtilities.equal(this.labelPaint, that.labelPaint)) {            return false;        }        if (this.labelAnchor != that.labelAnchor) {            return false;        }        if (this.labelTextAnchor != that.labelTextAnchor) {            return false;           }        if (!ObjectUtilities.equal(this.labelOffset, that.labelOffset)) {            return false;        }        if (!this.labelOffsetType.equals(that.labelOffsetType)) {            return false;        }        return true;    }        /**     * Creates a clone of the marker.     *      * @return A clone.     *      * @throws CloneNotSupportedException never.     */    public Object clone() throws CloneNotSupportedException {        return super.clone();    }        /**     * Provides serialization support.     *     * @param stream  the output stream.     *     * @throws IOException  if there is an I/O error.     */    private void writeObject(ObjectOutputStream stream) throws IOException {        stream.defaultWriteObject();        SerialUtilities.writePaint(this.paint, stream);        SerialUtilities.writeStroke(this.stroke, stream);        SerialUtilities.writePaint(this.outlinePaint, stream);        SerialUtilities.writeStroke(this.outlineStroke, stream);        SerialUtilities.writePaint(this.labelPaint, stream);    }    /**     * Provides serialization support.     *     * @param stream  the input stream.     *     * @throws IOException  if there is an I/O error.     * @throws ClassNotFoundException  if there is a classpath problem.     */    private void readObject(ObjectInputStream stream)         throws IOException, ClassNotFoundException {        stream.defaultReadObject();        this.paint = SerialUtilities.readPaint(stream);        this.stroke = SerialUtilities.readStroke(stream);        this.outlinePaint = SerialUtilities.readPaint(stream);        this.outlineStroke = SerialUtilities.readStroke(stream);        this.labelPaint = SerialUtilities.readPaint(stream);    }}

⌨️ 快捷键说明

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