亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? periodaxis.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* ===========================================================
 * 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 * USA.  
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 * in the United States and other countries.]
 *
 * ---------------
 * PeriodAxis.java
 * ---------------
 * (C) Copyright 2004, 2005, by Object Refinery Limited and Contributors.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   -;
 *
 * $Id: PeriodAxis.java,v 1.16.2.3 2005/10/25 20:37:34 mungady Exp $
 *
 * Changes
 * -------
 * 01-Jun-2004 : Version 1 (DG);
 * 16-Sep-2004 : Fixed bug in equals() method, added clone() method and 
 *               PublicCloneable interface (DG);
 * 25-Nov-2004 : Updates to support major and minor tick marks (DG);
 * 25-Feb-2005 : Fixed some tick mark bugs (DG);
 * 15-Apr-2005 : Fixed some more tick mark bugs (DG);
 * 26-Apr-2005 : Removed LOGGER (DG);
 * 16-Jun-2005 : Fixed zooming (DG);
 * 15-Sep-2005 : Changed configure() method to check autoRange flag,
 *               and added ticks to state (DG);
 *
 */

package org.jfree.chart.axis;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Stroke;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

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.data.time.Day;
import org.jfree.data.time.Month;
import org.jfree.data.time.RegularTimePeriod;
import org.jfree.data.time.Year;
import org.jfree.io.SerialUtilities;
import org.jfree.text.TextUtilities;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.TextAnchor;
import org.jfree.util.PublicCloneable;

/**
 * An axis that displays a date scale based on a 
 * {@link org.jfree.data.time.RegularTimePeriod}.  This axis works when
 * displayed across the bottom or top of a plot, but is broken for display at
 * the left or right of charts.
 */
public class PeriodAxis extends ValueAxis 
                        implements Cloneable, PublicCloneable, Serializable {
    
    /** For serialization. */
    private static final long serialVersionUID = 8353295532075872069L;
    
    /** The first time period in the overall range. */
    private RegularTimePeriod first;
    
    /** The last time period in the overall range. */
    private RegularTimePeriod last;
    
    /** 
     * The time zone used to convert 'first' and 'last' to absolute 
     * milliseconds. 
     */
    private TimeZone timeZone;
    
    /** 
     * The {@link RegularTimePeriod} subclass used to automatically determine 
     * the axis range. 
     */
    private Class autoRangeTimePeriodClass;
    
    /** 
     * Indicates the {@link RegularTimePeriod} subclass that is used to 
     * determine the spacing of the major tick marks.
     */
    private Class majorTickTimePeriodClass;
    
    /** 
     * A flag that indicates whether or not tick marks are visible for the 
     * axis. 
     */
    private boolean minorTickMarksVisible;

    /** 
     * Indicates the {@link RegularTimePeriod} subclass that is used to 
     * determine the spacing of the minor tick marks.
     */
    private Class minorTickTimePeriodClass;
    
    /** The length of the tick mark inside the data area (zero permitted). */
    private float minorTickMarkInsideLength = 0.0f;

    /** The length of the tick mark outside the data area (zero permitted). */
    private float minorTickMarkOutsideLength = 2.0f;

    /** The stroke used to draw tick marks. */
    private transient Stroke minorTickMarkStroke = new BasicStroke(0.5f);

    /** The paint used to draw tick marks. */
    private transient Paint minorTickMarkPaint = Color.black;
    
    /** Info for each labelling band. */
    private PeriodAxisLabelInfo[] labelInfo;

    /**
     * Creates a new axis.
     * 
     * @param label  the axis label.
     */
    public PeriodAxis(String label) {
        this(label, new Day(), new Day());
    }
    
    /**
     * Creates a new axis.
     * 
     * @param label  the axis label (<code>null</code> permitted).
     * @param first  the first time period in the axis range 
     *               (<code>null</code> not permitted).
     * @param last  the last time period in the axis range 
     *              (<code>null</code> not permitted).
     */
    public PeriodAxis(String label, 
                      RegularTimePeriod first, RegularTimePeriod last) {
        this(label, first, last, TimeZone.getDefault());
    }
    
    /**
     * Creates a new axis.
     * 
     * @param label  the axis label (<code>null</code> permitted).
     * @param first  the first time period in the axis range 
     *               (<code>null</code> not permitted).
     * @param last  the last time period in the axis range 
     *              (<code>null</code> not permitted).
     * @param timeZone  the time zone (<code>null</code> not permitted).
     */
    public PeriodAxis(String label, 
                      RegularTimePeriod first, RegularTimePeriod last, 
                      TimeZone timeZone) {
        
        super(label, null);
        this.first = first;
        this.last = last;
        this.timeZone = timeZone;
        this.autoRangeTimePeriodClass = first.getClass();
        this.majorTickTimePeriodClass = first.getClass();
        this.minorTickMarksVisible = false;
        this.minorTickTimePeriodClass = RegularTimePeriod.downsize(
            this.majorTickTimePeriodClass
        );
        setAutoRange(true);
        this.labelInfo = new PeriodAxisLabelInfo[2];
        this.labelInfo[0] = new PeriodAxisLabelInfo(
            Month.class, new SimpleDateFormat("MMM")
        );
        this.labelInfo[1] = new PeriodAxisLabelInfo(
            Year.class, new SimpleDateFormat("yyyy")
        );
        
    }
    
    /**
     * Returns the first time period in the axis range.
     * 
     * @return The first time period (never <code>null</code>).
     */
    public RegularTimePeriod getFirst() {
        return this.first;
    }
    
    /**
     * Sets the first time period in the axis range and sends an 
     * {@link AxisChangeEvent} to all registered listeners.
     * 
     * @param first  the time period (<code>null</code> not permitted).
     */
    public void setFirst(RegularTimePeriod first) {
        if (first == null) {
            throw new IllegalArgumentException("Null 'first' argument.");   
        }
        this.first = first;   
        notifyListeners(new AxisChangeEvent(this));
    }
    
    /**
     * Returns the last time period in the axis range.
     * 
     * @return The last time period (never <code>null</code>).
     */
    public RegularTimePeriod getLast() {
        return this.last;
    }
    
    /**
     * Sets the last time period in the axis range and sends an 
     * {@link AxisChangeEvent} to all registered listeners.
     * 
     * @param last  the time period (<code>null</code> not permitted).
     */
    public void setLast(RegularTimePeriod last) {
        if (last == null) {
            throw new IllegalArgumentException("Null 'last' argument.");   
        }
        this.last = last;   
        notifyListeners(new AxisChangeEvent(this));
    }
    
    /**
     * Returns the time zone used to convert the periods defining the axis 
     * range into absolute milliseconds.
     * 
     * @return The time zone (never <code>null</code>).
     */
    public TimeZone getTimeZone() {
        return this.timeZone;   
    }
    
    /**
     * Sets the time zone that is used to convert the time periods into 
     * absolute milliseconds.
     * 
     * @param zone  the time zone (<code>null</code> not permitted).
     */
    public void setTimeZone(TimeZone zone) {
        if (zone == null) {
            throw new IllegalArgumentException("Null 'zone' argument.");   
        }
        this.timeZone = zone;
        notifyListeners(new AxisChangeEvent(this));
    }
    
    /**
     * Returns the class used to create the first and last time periods for 
     * the axis range when the auto-range flag is set to <code>true</code>.
     * 
     * @return The class (never <code>null</code>).
     */
    public Class getAutoRangeTimePeriodClass() {
        return this.autoRangeTimePeriodClass;   
    }
    
    /**
     * Sets the class used to create the first and last time periods for the 
     * axis range when the auto-range flag is set to <code>true</code> and 
     * sends an {@link AxisChangeEvent} to all registered listeners.
     * 
     * @param c  the class (<code>null</code> not permitted).
     */
    public void setAutoRangeTimePeriodClass(Class c) {
        if (c == null) {
            throw new IllegalArgumentException("Null 'c' argument.");   
        }
        this.autoRangeTimePeriodClass = c;   
        notifyListeners(new AxisChangeEvent(this));
    }
    
    /**
     * Returns the class that controls the spacing of the major tick marks.
     * 
     * @return The class (never <code>null</code>).
     */
    public Class getMajorTickTimePeriodClass() {
        return this.majorTickTimePeriodClass;
    }
    
    /**
     * Sets the class that controls the spacing of the major tick marks, and 
     * sends an {@link AxisChangeEvent} to all registered listeners.
     * 
     * @param c  the class (a subclass of {@link RegularTimePeriod} is 
     *           expected).
     */
    public void setMajorTickTimePeriodClass(Class c) {
        if (c == null) {
            throw new IllegalArgumentException("Null 'c' argument.");
        }
        this.majorTickTimePeriodClass = c;
        notifyListeners(new AxisChangeEvent(this));
    }
    
    /**
     * Returns the flag that controls whether or not minor tick marks
     * are displayed for the axis.
     * 
     * @return A boolean.
     */
    public boolean isMinorTickMarksVisible() {
        return this.minorTickMarksVisible;
    }
    
    /**
     * Sets the flag that controls whether or not minor tick marks
     * are displayed for the axis, and sends a {@link AxisChangeEvent}
     * to all registered listeners.
     * 
     * @param visible  the flag.
     */
    public void setMinorTickMarksVisible(boolean visible) {
        this.minorTickMarksVisible = visible;
        notifyListeners(new AxisChangeEvent(this));
    }
    
    /**
     * Returns the class that controls the spacing of the minor tick marks.
     * 
     * @return The class (never <code>null</code>).
     */
    public Class getMinorTickTimePeriodClass() {
        return this.minorTickTimePeriodClass;
    }
    
    /**
     * Sets the class that controls the spacing of the minor tick marks, and 
     * sends an {@link AxisChangeEvent} to all registered listeners.
     * 
     * @param c  the class (a subclass of {@link RegularTimePeriod} is 
     *           expected).
     */
    public void setMinorTickTimePeriodClass(Class c) {
        if (c == null) {
            throw new IllegalArgumentException("Null 'c' argument.");
        }
        this.minorTickTimePeriodClass = c;
        notifyListeners(new AxisChangeEvent(this));
    }
    
    /**
     * Returns the stroke used to display minor tick marks, if they are 
     * visible.
     * 
     * @return A stroke (never <code>null</code>).
     */
    public Stroke getMinorTickMarkStroke() {
        return this.minorTickMarkStroke;
    }
    
    /**
     * Sets the stroke used to display minor tick marks, if they are 
     * visible, and sends a {@link AxisChangeEvent} to all registered 
     * listeners.
     * 
     * @param stroke  the stroke (<code>null</code> not permitted).
     */
    public void setMinorTickMarkStroke(Stroke stroke) {
        if (stroke == null) {
            throw new IllegalArgumentException("Null 'stroke' argument.");
        }
        this.minorTickMarkStroke = stroke;
        notifyListeners(new AxisChangeEvent(this));
    }
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
宅男噜噜噜66一区二区66| 欧美成人精品高清在线播放| 色婷婷精品久久二区二区蜜臂av | 亚洲精品在线三区| 久久品道一品道久久精品| 欧美激情在线免费观看| 亚洲精选一二三| 《视频一区视频二区| 午夜精品一区二区三区免费视频 | 亚洲综合在线电影| 免费一级片91| 国产99久久精品| 在线播放/欧美激情| 亚洲国产精品成人综合| 爽好久久久欧美精品| 国产福利电影一区二区三区| 欧美日韩免费观看一区二区三区 | 日韩欧美综合在线| 综合分类小说区另类春色亚洲小说欧美| 亚洲午夜久久久久久久久电影院| 国产自产v一区二区三区c| 在线一区二区三区四区五区 | 美腿丝袜一区二区三区| 99国产精品久久久| 欧美精品一区二区在线播放| 中文字幕乱码久久午夜不卡| 亚洲欧美国产毛片在线| 国产高清成人在线| 日韩久久久精品| 亚洲高清视频中文字幕| 色综合网色综合| 国产精品三级电影| 激情都市一区二区| 制服丝袜av成人在线看| 亚洲六月丁香色婷婷综合久久| 国产精品自拍在线| 欧美videos中文字幕| 日韩制服丝袜av| 欧美日韩国产高清一区二区| 一区二区免费看| 99国产精品久| 久久亚洲精品国产精品紫薇| 亚洲国产精品久久久久秋霞影院| 国产福利一区二区三区视频在线| 欧美一区二区三区色| 亚洲综合激情网| 91黄色小视频| 亚洲一区自拍偷拍| 欧美视频一区二| 亚洲国产美女搞黄色| 在线观看日产精品| 亚洲国产三级在线| 欧美麻豆精品久久久久久| 亚洲国产综合91精品麻豆| 91麻豆精品国产自产在线| 九九精品一区二区| 国产精品毛片高清在线完整版| 99久久精品免费看| 亚洲高清免费视频| 欧美一卡2卡3卡4卡| 美女网站色91| 国产亚洲精久久久久久| 国产69精品久久久久毛片| 日本一区二区综合亚洲| 白白色亚洲国产精品| 伊人色综合久久天天| 欧美三级日韩在线| 毛片av一区二区三区| 精品国精品国产| 国产成人在线色| 亚洲色图视频网站| 91精品国产91热久久久做人人 | 色综合天天综合给合国产| 国产精品国产三级国产普通话99 | 91福利在线导航| 免费高清在线视频一区·| 久久久99精品免费观看| av不卡一区二区三区| 亚洲精品免费在线播放| 6080日韩午夜伦伦午夜伦| 精品在线一区二区三区| 欧美激情一区二区三区蜜桃视频| 91在线观看下载| 日韩精品电影一区亚洲| 国产色产综合产在线视频| 91麻豆.com| 美女性感视频久久| 亚洲三级免费电影| 欧美一区二区二区| 成人自拍视频在线观看| 亚洲va欧美va国产va天堂影院| 2020国产精品久久精品美国| 99精品欧美一区| 麻豆成人在线观看| 樱桃国产成人精品视频| 精品国产一区二区三区忘忧草| 99久久久国产精品免费蜜臀| 青青草视频一区| 亚洲精品在线网站| 欧美性感一区二区三区| 国产成人免费av在线| 亚洲一级电影视频| 国产午夜精品一区二区三区嫩草| 欧美自拍丝袜亚洲| 久久国产乱子精品免费女| 国产精品久久久久久久岛一牛影视| 欧美日韩亚州综合| 97aⅴ精品视频一二三区| 久久99久久久久| 午夜欧美电影在线观看| 中文一区二区完整视频在线观看| 制服丝袜成人动漫| 欧美探花视频资源| 91在线高清观看| 国产成人午夜高潮毛片| 久久se这里有精品| 日本aⅴ亚洲精品中文乱码| 亚洲精品高清在线观看| 国产精品蜜臀av| 久久网站最新地址| 日韩午夜电影av| 日韩一区二区免费在线观看| 日本道免费精品一区二区三区| 成熟亚洲日本毛茸茸凸凹| 国产另类ts人妖一区二区| 久久国产精品免费| 美洲天堂一区二卡三卡四卡视频| 午夜精品影院在线观看| 天堂一区二区在线| 日韩电影免费在线| 蜜桃视频在线观看一区| 美女视频免费一区| 久久av资源网| 久久国产麻豆精品| 激情久久五月天| 国产一区二区精品久久| 国产一区在线精品| 国产一区二区三区四| 国产成人精品免费视频网站| 国产精品亚洲成人| 国产99久久久精品| 菠萝蜜视频在线观看一区| 波多野结衣中文字幕一区| 不卡的av电影在线观看| 97久久精品人人做人人爽50路| 94色蜜桃网一区二区三区| 一本一本久久a久久精品综合麻豆| 一本色道久久综合亚洲91| 欧洲中文字幕精品| 欧美一区二区三区婷婷月色| 精品毛片乱码1区2区3区| 国产亚洲综合性久久久影院| 国产偷国产偷亚洲高清人白洁| 亚洲国产经典视频| 亚洲精品精品亚洲| 午夜精品一区二区三区免费视频| 青青国产91久久久久久| 日韩国产精品大片| 极品少妇xxxx偷拍精品少妇| 国产综合久久久久久鬼色| 美女精品一区二区| 成人网页在线观看| 欧美日韩国产一二三| 精品伦理精品一区| 国产精品全国免费观看高清| 亚洲综合精品久久| 韩国女主播一区| 色激情天天射综合网| 日韩精品一区二区三区老鸭窝 | 成人毛片老司机大片| 欧美午夜精品久久久久久超碰| 日韩一区二区免费高清| 久久久国产一区二区三区四区小说| 1区2区3区精品视频| 五月天亚洲精品| 成人黄色电影在线 | 欧美亚洲一区二区在线观看| 欧美岛国在线观看| 一区二区高清免费观看影视大全 | 亚洲欧洲国产日韩| 三级在线观看一区二区| 国产黄色91视频| 91精品国产一区二区三区| 中文字幕一区二区三区蜜月| 韩国视频一区二区| 日韩限制级电影在线观看| 亚洲成人av中文| 91高清视频在线| 一区二区三区国产精品| 不卡的av电影| 最新欧美精品一区二区三区| 国产黄色精品视频| 中文字幕精品一区二区精品绿巨人 | 午夜精品久久久久影视| 色8久久精品久久久久久蜜| 亚洲欧洲av另类| 97se亚洲国产综合自在线| 亚洲欧美在线视频观看| 成人激情开心网| 亚洲人123区|