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

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

?? intervalxydelegate.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* ===========================================================
 * 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.]
 *
 * -----------------------
 * IntervalXYDelegate.java
 * -----------------------
 * (C) Copyright 2004, 2005, by Andreas Schroeder and Contributors.
 *
 * Original Author:  Andreas Schroeder;
 * Contributor(s):   David Gilbert (for Object Refinery Limited);
 *
 * $Id: IntervalXYDelegate.java,v 1.10.2.2 2005/10/25 21:36:51 mungady Exp $
 *
 * Changes (from 31-Mar-2004)
 * --------------------------
 * 31-Mar-2004 : Version 1 (AS);
 * 15-Jul-2004 : Switched getX() with getXValue() and getY() with 
 *               getYValue() (DG);
 * 18-Aug-2004 : Moved from org.jfree.data --> org.jfree.data.xy (DG);
 * 04-Nov-2004 : Added argument check for setIntervalWidth() method (DG);
 * 17-Nov-2004 : New methods to reflect changes in DomainInfo (DG);
 * 11-Jan-2005 : Removed deprecated methods in preparation for the 1.0.0 
 *               release (DG);
 * 21-Feb-2005 : Made public and added equals() method (DG);
 * 06-Oct-2005 : Implemented DatasetChangeListener to recalculate 
 *               autoIntervalWidth (DG);
 *   
 */

package org.jfree.data.xy;

import java.io.Serializable;

import org.jfree.data.DomainInfo;
import org.jfree.data.Range;
import org.jfree.data.RangeInfo;
import org.jfree.data.general.DatasetChangeEvent;
import org.jfree.data.general.DatasetChangeListener;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.util.PublicCloneable;

/**
 * A delegate that handles the specification or automatic calculation of the
 * interval surrounding the x-values in a dataset.  This is used to extend
 * a regular {@link XYDataset} to support the {@link IntervalXYDataset} 
 * interface.
 * <p> 
 * The decorator pattern was not used because of the several possibly 
 * implemented interfaces of the decorated instance (e.g. 
 * {@link TableXYDataset}, {@link RangeInfo}, {@link DomainInfo} etc.).
 * <p>
 * The width can be set manually or calculated automatically. The switch
 * autoWidth allows to determine which behavior is used. The auto width 
 * calculation tries to find the smallest gap between two x-values in the
 * dataset.  If there is only one item in the series, the auto width 
 * calculation fails and falls back on the manually set interval width (which 
 * is itself defaulted to 1.0). 
 * 
 * @author andreas.schroeder
 */
public class IntervalXYDelegate implements DatasetChangeListener,
                                           DomainInfo, Serializable, 
                                           Cloneable, PublicCloneable {
    
    /** For serialization. */
    private static final long serialVersionUID = -685166711639592857L;
    
    /**
     * The dataset to enhance. 
     */
    private XYDataset dataset;

    /**
     * A flag to indicate whether the width should be calculated automatically.
     */
    private boolean autoWidth;
    
    /**
     * A value between 0.0 and 1.0 that indicates the position of the x-value
     * within the interval.
     */
    private double intervalPositionFactor; 
    
    /**
     * The fixed interval width (defaults to 1.0).
     */
    private double fixedIntervalWidth;
    
    /**
     * The automatically calculated interval width.
     */
    private double autoIntervalWidth;
    
    /**
     * Creates a new delegate that.
     * 
     * @param dataset  the underlying dataset (<code>null</code> not permitted).
     */
    public IntervalXYDelegate(XYDataset dataset) {
        this(dataset, true);
    }
    
    /**
     * Creates a new delegate for the specified dataset.
     * 
     * @param dataset  the underlying dataset (<code>null</code> not permitted).
     * @param autoWidth  a flag that controls whether the interval width is 
     *                   calculated automatically.
     */
    public IntervalXYDelegate(XYDataset dataset, boolean autoWidth) {
        if (dataset == null) {
            throw new IllegalArgumentException("Null 'dataset' argument.");
        }
        this.dataset = dataset;
        this.autoWidth = autoWidth;
        this.intervalPositionFactor = 0.5;
        this.autoIntervalWidth = Double.POSITIVE_INFINITY; 
        this.fixedIntervalWidth = 1.0;
    }
    
    /**
     * Returns <code>true</code> if the interval width is automatically 
     * calculated, and <code>false</code> otherwise.
     * 
     * @return A boolean.
     */
    public boolean isAutoWidth() {
        return this.autoWidth;
    }
    
    /**
     * Sets the flag that indicates whether the interval width is automatically
     * calculated.  If the flag is set to <code>true</code>, the interval is
     * recalculated.
     * <p>
     * Note: recalculating the interval amounts to changing the data values
     * represented by the dataset.  The calling dataset must fire an
     * appropriate {@link DatasetChangeEvent}.
     * 
     * @param b  a boolean.
     */
    public void setAutoWidth(boolean b) {
        this.autoWidth = b;
        if (b) {
            this.autoIntervalWidth = recalculateInterval();
        }
    }
    
    /**
     * Returns the interval position factor.
     * 
     * @return The interval position factor.
     */
    public double getIntervalPositionFactor() {
        return this.intervalPositionFactor;
    }

    /**
     * Sets the interval position factor.  This controls how the interval is
     * aligned to the x-value.  For a value of 0.5, the interval is aligned
     * with the x-value in the center.  For a value of 0.0, the interval is
     * aligned with the x-value at the lower end of the interval, and for a 
     * value of 1.0, the interval is aligned with the x-value at the upper
     * end of the interval.
     * 
     * Note that changing the interval position factor amounts to changing the 
     * data values represented by the dataset.  Therefore, the dataset that is 
     * using this delegate is responsible for generating the 
     * appropriate {@link DatasetChangeEvent}.     
     * 
     * @param d  the new interval position factor (in the range 
     *           <code>0.0</code> to <code>1.0</code> inclusive).
     */
    public void setIntervalPositionFactor(double d) {
        if (d < 0.0 || 1.0 < d) {
            throw new IllegalArgumentException(
                    "Argument 'd' outside valid range.");
        }
        this.intervalPositionFactor = d;
    }

    /**
     * Returns the fixed interval width.
     * 
     * @return The fixed interval width.
     */
    public double getFixedIntervalWidth() {
        return this.fixedIntervalWidth;
    }
    
    /**
     * Sets the fixed interval width and, as a side effect, sets the
     * <code>autoWidth</code> flag to <code>false</code>.  
     * 
     * Note that changing the interval width amounts to changing the data 
     * values represented by the dataset.  Therefore, the dataset
     * that is using this delegate is responsible for generating the 
     * appropriate {@link DatasetChangeEvent}.
     * 
     * @param w  the width (negative values not permitted).
     */
    public void setFixedIntervalWidth(double w) {
        if (w < 0.0) {
            throw new IllegalArgumentException("Negative 'w' argument.");
        }
        this.fixedIntervalWidth = w;
        this.autoWidth = false;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产成人在线影院 | 婷婷亚洲久悠悠色悠在线播放| 一级日本不卡的影视| 久久不见久久见免费视频1| 一本色道综合亚洲| 国产精品美女一区二区三区 | 日韩av中文在线观看| 日本精品一区二区三区四区的功能| 在线不卡欧美精品一区二区三区| 国产欧美精品一区二区色综合| 人人超碰91尤物精品国产| 一本一道波多野结衣一区二区| 久久蜜桃av一区二区天堂| 亚洲黄色小视频| av一区二区久久| 国产夜色精品一区二区av| 蜜桃免费网站一区二区三区| 欧美美女直播网站| 亚洲国产精品欧美一二99| 91网站最新地址| 国产精品久久久久久久久免费丝袜| 麻豆精品久久久| 欧美日韩电影在线| 亚洲一区日韩精品中文字幕| 91丨九色丨蝌蚪丨老版| 日韩一区二区视频在线观看| 一区二区三区色| 国产99久久久久久免费看农村| 欧美一区二区高清| 婷婷成人综合网| 欧美精品少妇一区二区三区 | 欧美一区二区三区在| 一区二区三区免费| 在线观看国产日韩| 亚洲成国产人片在线观看| 欧美专区日韩专区| 91九色最新地址| 一本到不卡免费一区二区| 欧美性一区二区| 亚洲一区二区在线播放相泽| 欧美综合视频在线观看| 午夜精品免费在线观看| 欧美三区在线观看| 国产一区二区成人久久免费影院 | 欧美日韩情趣电影| 欧美日韩在线三区| 日韩二区三区四区| 欧美一区二区大片| 国产精品一二二区| 亚洲码国产岛国毛片在线| 色综合中文字幕国产 | 欧美色中文字幕| 亚洲一区二区综合| 欧美精品在欧美一区二区少妇| 亚洲成精国产精品女| 日韩美女一区二区三区四区| 国产麻豆精品一区二区| 国产精品午夜在线| 欧美曰成人黄网| 蜜臀久久99精品久久久久宅男| 久久欧美中文字幕| 在线影院国内精品| 精品系列免费在线观看| 国产精品私人自拍| 宅男噜噜噜66一区二区66| 国产精品一区二区三区网站| 亚洲图片激情小说| 日韩丝袜美女视频| 99精品欧美一区二区蜜桃免费 | 丰满亚洲少妇av| 亚洲国产日韩a在线播放性色| 日韩精品影音先锋| 色美美综合视频| 久久电影网站中文字幕| 亚洲精选一二三| 精品国产免费人成电影在线观看四季| 北条麻妃国产九九精品视频| 午夜影院久久久| 中文字幕视频一区二区三区久| 欧美日韩一二三区| 北条麻妃一区二区三区| 久久精品二区亚洲w码| 亚洲同性同志一二三专区| 精品成人在线观看| 91福利国产精品| eeuss国产一区二区三区| 免费高清在线一区| 夜夜嗨av一区二区三区网页| 久久精品在这里| 日韩三级在线免费观看| 欧美影视一区二区三区| 大尺度一区二区| 国产麻豆成人精品| 免费在线观看不卡| 天天操天天综合网| 一区二区三区精密机械公司| 中文字幕精品一区| 欧美激情在线一区二区| 精品日韩av一区二区| 欧美绝品在线观看成人午夜影视| 99久久99久久免费精品蜜臀| 福利电影一区二区三区| 精品在线观看免费| 麻豆精品精品国产自在97香蕉| 亚洲成av人在线观看| 一区二区三区在线免费播放| 最新不卡av在线| 国产精品电影一区二区三区| 久久久久国产一区二区三区四区| 日韩欧美电影在线| 日韩美一区二区三区| 欧美成人女星排名| 精品成人佐山爱一区二区| 日韩一区二区中文字幕| 91精品国产综合久久福利| 欧美丰满一区二区免费视频| 欧美日韩电影在线播放| 91精品婷婷国产综合久久竹菊| 欧美日韩一级视频| 欧美一区二区日韩一区二区| 欧美一区二区视频在线观看2020| 欧美狂野另类xxxxoooo| 日韩一区二区在线看片| 日韩女优毛片在线| 欧美精品一区二区三区四区| 久久噜噜亚洲综合| 国产免费久久精品| 亚洲精品国产第一综合99久久| 亚洲乱码中文字幕综合| 亚洲国产精品久久久男人的天堂 | 日韩美女主播在线视频一区二区三区 | 国产丶欧美丶日本不卡视频| 风间由美一区二区av101 | 一区二区三区四区不卡在线| 夜色激情一区二区| 日韩综合在线视频| 精品在线一区二区三区| 91在线观看成人| 亚洲欧洲av在线| 亚洲国产精品久久久久秋霞影院| 久久国产福利国产秒拍| 国产成人综合亚洲网站| 国产在线一区二区| 色域天天综合网| 欧美一区二区在线观看| 国产精品每日更新在线播放网址 | 国产欧美日韩在线视频| 国产最新精品免费| www.66久久| 日韩精品综合一本久道在线视频| 中日韩av电影| 日韩精品每日更新| 成人精品鲁一区一区二区| 欧美伊人久久久久久午夜久久久久| 欧美一级二级三级蜜桃| 亚洲日本va午夜在线影院| 蜜桃精品在线观看| 色天天综合久久久久综合片| 91精品国产91久久综合桃花| 欧美极品aⅴ影院| 麻豆久久久久久久| 91国产福利在线| 欧美激情一区三区| 日韩国产精品大片| 91激情五月电影| 中文子幕无线码一区tr| 另类人妖一区二区av| 欧美日韩综合在线免费观看| 中文字幕制服丝袜一区二区三区| 日本不卡一二三区黄网| 91麻豆国产福利在线观看| 国产午夜精品久久久久久免费视 | 美女一区二区在线观看| 欧美视频在线一区二区三区 | 久久综合久久鬼色| 午夜视频在线观看一区| 91啪九色porn原创视频在线观看| xf在线a精品一区二区视频网站| 午夜成人免费电影| 在线观看日韩电影| 亚洲欧美国产三级| 99精品久久免费看蜜臀剧情介绍| 久久久精品tv| 美女脱光内衣内裤视频久久网站 | 91玉足脚交白嫩脚丫在线播放| 久久久久99精品国产片| 国产在线不卡一卡二卡三卡四卡| 欧美日韩免费一区二区三区 | 欧美一区二区二区| 日韩精品一级二级| 欧美日韩精品福利| 亚洲国产精品久久久久婷婷884| 91在线码无精品| 国产精品成人一区二区艾草 | 国内精品国产成人国产三级粉色| 欧美一区三区二区| 日本女人一区二区三区| 亚洲一区二区三区免费视频| 黄色日韩三级电影| 久久影音资源网|