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

📄 numberaxis.java

📁 这是一个segy数据显示程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/* =========================================================== * JFreeChart : a free chart library for the Java(tm) platform * =========================================================== * * (C) Copyright 2000-2004, 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.] * * --------------- * NumberAxis.java * --------------- * (C) Copyright 2000-2004, by Object Refinery Limited and Contributors. * * Original Author:  David Gilbert (for Object Refinery Limited); * Contributor(s):   Laurence Vanhelsuwe; * * $Id: NumberAxis.java,v 1.41 2004/06/03 14:26:37 mungady Exp $ * * Changes (from 18-Sep-2001) * -------------------------- * 18-Sep-2001 : Added standard header and fixed DOS encoding problem (DG); * 22-Sep-2001 : Changed setMinimumAxisValue(...) and setMaximumAxisValue(...) so that they *               clear the autoRange flag (DG); * 27-Nov-2001 : Removed old, redundant code (DG); * 30-Nov-2001 : Added accessor methods for the standard tick units (DG); * 08-Jan-2002 : Added setAxisRange(...) method (since renamed setRange(...)) (DG); * 16-Jan-2002 : Added setTickUnit(...) method.  Extended ValueAxis to support an optional *               cross-hair (DG); * 08-Feb-2002 : Fixes bug to ensure the autorange is recalculated if the *               setAutoRangeIncludesZero flag is changed (DG); * 25-Feb-2002 : Added a new flag autoRangeStickyZero to provide further control over margins in *               the auto-range mechanism.  Updated constructors.  Updated import statements. *               Moved the createStandardTickUnits() method to the TickUnits class (DG); * 19-Apr-2002 : Updated Javadoc comments (DG); * 01-May-2002 : Updated for changes to TickUnit class, removed valueToString(...) method (DG); * 25-Jul-2002 : Moved the lower and upper margin attributes, and the auto-range minimum size, up *               one level to the ValueAxis class (DG); * 05-Sep-2002 : Updated constructor to match changes in Axis class (DG); * 01-Oct-2002 : Fixed errors reported by Checkstyle (DG); * 04-Oct-2002 : Moved standardTickUnits from NumberAxis --> ValueAxis (DG); * 24-Oct-2002 : Added a number format override (DG); * 08-Nov-2002 : Moved to new package com.jrefinery.chart.axis (DG); * 19-Nov-2002 : Removed grid settings (now controlled by the plot) (DG); * 14-Jan-2003 : Changed autoRangeMinimumSize from Number --> double, and moved crosshair settings *               to the plot classes (DG); * 20-Jan-2003 : Removed the monolithic constructor (DG); * 26-Mar-2003 : Implemented Serializable (DG); * 16-Jul-2003 : Reworked to allow for multiple secondary axes (DG); * 13-Aug-2003 : Implemented Cloneable (DG); * 07-Oct-2003 : Fixed bug (815028) in the auto range calculation (DG); * 29-Oct-2003 : Added workaround for font alignment in PDF output (DG); * 07-Nov-2003 : Modified to use NumberTick class (DG); * 21-Jan-2004 : Renamed translateJava2DToValue --> java2DToValue, and translateValueToJava2D --> *               valueToJava2D (DG);  * 03-Mar-2004 : Added plotState to draw() method (DG); * 07-Apr-2004 : Changed string width calculation (DG); * */package org.jfree.chart.axis;import java.awt.Font;import java.awt.FontMetrics;import java.awt.Graphics2D;import java.awt.Insets;import java.awt.font.FontRenderContext;import java.awt.font.LineMetrics;import java.awt.geom.Rectangle2D;import java.io.Serializable;import java.text.DecimalFormat;import java.text.NumberFormat;import java.util.List;import java.util.Locale;import org.jfree.chart.event.AxisChangeEvent;import org.jfree.chart.plot.Plot;import org.jfree.chart.plot.PlotRenderingInfo;import org.jfree.chart.plot.ValueAxisPlot;import org.jfree.data.Range;import org.jfree.ui.RectangleEdge;import org.jfree.ui.TextAnchor;import org.jfree.util.ObjectUtils;/** * An axis for displaying numerical data. * <P> * If the axis is set up to automatically determine its range to fit the data, * you can ensure that the range includes zero (statisticians usually prefer * this) by setting the <code>autoRangeIncludesZero</code> flag to <code>true</code>. * <P> * The <code>NumberAxis</code> class has a mechanism for automatically selecting a tick unit * that is appropriate for the current axis range.  This mechanism is an * adaptation of code suggested by Laurence Vanhelsuwe. */public class NumberAxis extends ValueAxis implements Cloneable, Serializable {    /** The default value for the autoRangeIncludesZero flag. */    public static final boolean DEFAULT_AUTO_RANGE_INCLUDES_ZERO = true;    /** The default value for the autoRangeStickyZero flag. */    public static final boolean DEFAULT_AUTO_RANGE_STICKY_ZERO = true;    /** The default tick unit. */    public static final NumberTickUnit        DEFAULT_TICK_UNIT = new NumberTickUnit(1.0, new DecimalFormat("0"));    /** The default setting for the vertical tick labels flag. */    public static final boolean DEFAULT_VERTICAL_TICK_LABELS = false;    /**     * A flag that affects the axis range when the range is determined     * automatically.  If the auto range does NOT include zero and this flag     * is TRUE, then the range is changed to include zero.     */    private boolean autoRangeIncludesZero;    /**     * A flag that affects the size of the margins added to the axis range when     * the range is determined automatically.  If the value 0 falls within the     * margin and this flag is TRUE, then the margin is truncated at zero.     */    private boolean autoRangeStickyZero;    /** The tick unit for the axis. */    private NumberTickUnit tickUnit;    /** The override number format. */    private NumberFormat numberFormatOverride;    /** An optional band for marking regions on the axis. */    private MarkerAxisBand markerBand;    /**     * Default constructor.     */    public NumberAxis() {        this(null);        }        /**     * Constructs a number axis, using default values where necessary.     *     * @param label  the axis label (<code>null</code> permitted).     */    public NumberAxis(String label) {        super(label, NumberAxis.createStandardTickUnits());        this.autoRangeIncludesZero = DEFAULT_AUTO_RANGE_INCLUDES_ZERO;        this.autoRangeStickyZero = DEFAULT_AUTO_RANGE_STICKY_ZERO;        this.tickUnit = DEFAULT_TICK_UNIT;        this.numberFormatOverride = null;        this.markerBand = null;    }        /**     * Returns the flag that indicates whether or not the automatic axis range     * (if indeed it is determined automatically) is forced to include zero.     *     * @return The flag.     */    public boolean autoRangeIncludesZero() {        return this.autoRangeIncludesZero;    }    /**     * Sets the flag that indicates whether or not the axis range, if automatically calculated, is     * forced to include zero.     * <p>     * If the flag is changed to <code>true</code>, the axis range is recalculated.     * <p>     * Any change to the flag will trigger an {@link AxisChangeEvent}.     *     * @param flag  the new value of the flag.     */    public void setAutoRangeIncludesZero(boolean flag) {        if (this.autoRangeIncludesZero != flag) {            this.autoRangeIncludesZero = flag;            if (isAutoRange()) {                autoAdjustRange();            }            notifyListeners(new AxisChangeEvent(this));        }    }    /**     * Returns a flag that affects the auto-range when zero falls outside the     * data range but inside the margins defined for the axis.     *     * @return The flag.     */    public boolean autoRangeStickyZero() {        return this.autoRangeStickyZero;    }    /**     * Sets a flag that affects the auto-range when zero falls outside the data     * range but inside the margins defined for the axis.     *     * @param flag  the new flag.     */    public void setAutoRangeStickyZero(boolean flag) {        if (this.autoRangeStickyZero != flag) {            this.autoRangeStickyZero = flag;            if (isAutoRange()) {                autoAdjustRange();            }            notifyListeners(new AxisChangeEvent(this));        }    }    /**     * Returns the tick unit for the axis.     *     * @return The tick unit for the axis.     */    public NumberTickUnit getTickUnit() {        return this.tickUnit;    }    /**     * Sets the tick unit for the axis and sends an {@link AxisChangeEvent} to all registered     * listeners.  A side effect of calling this method is that the "auto-select" feature for      * tick units is switched off (you can restore it using the      * {@link ValueAxis#setAutoTickUnitSelection(boolean)} method).     *     * @param unit  the new tick unit (<code>null</code> not permitted).     */    public void setTickUnit(NumberTickUnit unit) {        // defer argument checking...        setTickUnit(unit, true, true);    }    /**     * Sets the tick unit for the axis and, if requested, sends an {@link AxisChangeEvent} to all      * registered listeners.  In addition, an option is provided to turn off the "auto-select"      * feature for tick units (you can restore it using the      * {@link ValueAxis#setAutoTickUnitSelection(boolean)} method).     *     * @param unit  the new tick unit (<code>null</code> not permitted).     * @param notify  notify listeners?     * @param turnOffAutoSelect  turn off the auto-tick selection?     */    public void setTickUnit(NumberTickUnit unit, boolean notify, boolean turnOffAutoSelect) {        if (unit == null) {            throw new IllegalArgumentException("Null 'unit' argument.");           }                this.tickUnit = unit;        if (turnOffAutoSelect) {            setAutoTickUnitSelection(false, false);        }        if (notify) {            notifyListeners(new AxisChangeEvent(this));        }    }    /**     * Returns the number format override.  If this is non-null, then it will be used to format     * the numbers on the axis.     *     * @return the number formatter (possibly <code>null</code>).     */    public NumberFormat getNumberFormatOverride() {        return this.numberFormatOverride;    }    /**     * Sets the number format override.  If this is non-null, then it will be used to format     * the numbers on the axis.     *     * @param formatter  the number formatter (<code>null</code> permitted).     */    public void setNumberFormatOverride(NumberFormat formatter) {        this.numberFormatOverride = formatter;        notifyListeners(new AxisChangeEvent(this));    }    /**     * Returns the (optional) marker band for the axis.     *     * @return The marker band (possibly <code>null</code>).     */    public MarkerAxisBand getMarkerBand() {        return this.markerBand;    }

⌨️ 快捷键说明

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