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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xyseriescollection.java

?? jfreechart1.0.1 jsp繪制圖表的開發(fā)包
?? JAVA
字號:
/* ===========================================================
 * 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.]
 *
 * -----------------------
 * XYSeriesCollection.java
 * -----------------------
 * (C) Copyright 2001-2005, by Object Refinery Limited and Contributors.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   Aaron Metzger;
 *
 * $Id: XYSeriesCollection.java,v 1.12.2.2 2005/10/25 21:36:51 mungady Exp $
 *
 * Changes
 * -------
 * 15-Nov-2001 : Version 1 (DG);
 * 03-Apr-2002 : Added change listener code (DG);
 * 29-Apr-2002 : Added removeSeries, removeAllSeries methods (ARM);
 * 07-Oct-2002 : Fixed errors reported by Checkstyle (DG);
 * 26-Mar-2003 : Implemented Serializable (DG);
 * 04-Aug-2003 : Added getSeries() method (DG);
 * 31-Mar-2004 : Modified to use an XYIntervalDelegate.
 * 05-May-2004 : Now extends AbstractIntervalXYDataset (DG);
 * 18-Aug-2004 : Moved from org.jfree.data --> org.jfree.data.xy (DG);
 * 17-Nov-2004 : Updated for changes to DomainInfo interface (DG);
 * 11-Jan-2005 : Removed deprecated code in preparation for 1.0.0 release (DG);
 * 28-Mar-2005 : Fixed bug in getSeries(int) method (1170825) (DG);
 * 05-Oct-2005 : Made the interval delegate a dataset listener (DG);
 *
 */

package org.jfree.data.xy;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

import org.jfree.data.DomainInfo;
import org.jfree.data.Range;
import org.jfree.data.general.DatasetChangeEvent;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.util.ObjectUtilities;

/**
 * Represents a collection of {@link XYSeries} objects that can be used as a 
 * dataset.
 */
public class XYSeriesCollection extends AbstractIntervalXYDataset
                                implements IntervalXYDataset, DomainInfo, 
                                           Serializable {

    /** For serialization. */
    private static final long serialVersionUID = -7590013825931496766L;
    
    /** The series that are included in the collection. */
    private List data;
    
    /** The interval delegate (used to calculate the start and end x-values). */
    private IntervalXYDelegate intervalDelegate;
    
    /**
     * Constructs an empty dataset.
     */
    public XYSeriesCollection() {
        this(null);
    }

    /**
     * Constructs a dataset and populates it with a single series.
     *
     * @param series  the series (<code>null</code> ignored).
     */
    public XYSeriesCollection(XYSeries series) {
        this.data = new java.util.ArrayList();
        this.intervalDelegate = new IntervalXYDelegate(this, false);
        addChangeListener(this.intervalDelegate);
        if (series != null) {
            this.data.add(series);
            series.addChangeListener(this);
        }
    }
    
    /**
     * Adds a series to the collection and sends a {@link DatasetChangeEvent} 
     * to all registered listeners.
     *
     * @param series  the series (<code>null</code> not permitted).
     */
    public void addSeries(XYSeries series) {

        if (series == null) {
            throw new IllegalArgumentException("Null 'series' argument.");
        }
        this.data.add(series);
        series.addChangeListener(this);
        fireDatasetChanged();

    }

    /**
     * Removes a series from the collection and sends a 
     * {@link DatasetChangeEvent} to all registered listeners.
     *
     * @param series  the series index (zero-based).
     */
    public void removeSeries(int series) {

        if ((series < 0) || (series > getSeriesCount())) {
            throw new IllegalArgumentException("Series index out of bounds.");
        }

        // fetch the series, remove the change listener, then remove the series.
        XYSeries ts = (XYSeries) this.data.get(series);
        ts.removeChangeListener(this);
        this.data.remove(series);
        fireDatasetChanged();

    }

    /**
     * Removes a series from the collection and sends a 
     * {@link DatasetChangeEvent} to all registered listeners.
     *
     * @param series  the series (<code>null</code> not permitted).
     */
    public void removeSeries(XYSeries series) {

        if (series == null) {
            throw new IllegalArgumentException("Null 'series' argument.");
        }
        if (this.data.contains(series)) {
            series.removeChangeListener(this);
            this.data.remove(series);
            fireDatasetChanged();
        }

    }
    
    /**
     * Removes all the series from the collection and sends a 
     * {@link DatasetChangeEvent} to all registered listeners.
     */
    public void removeAllSeries() {
        // Unregister the collection as a change listener to each series in 
        // the collection.
        for (int i = 0; i < this.data.size(); i++) {
          XYSeries series = (XYSeries) this.data.get(i);
          series.removeChangeListener(this);
        }

        // Remove all the series from the collection and notify listeners.
        this.data.clear();
        fireDatasetChanged();
    }

    /**
     * Returns the number of series in the collection.
     *
     * @return The series count.
     */
    public int getSeriesCount() {
        return this.data.size();
    }

    /**
     * Returns a list of all the series in the collection.  
     * 
     * @return The list (which is unmodifiable).
     */
    public List getSeries() {
        return Collections.unmodifiableList(this.data);
    }

    /**
     * Returns a series from the collection.
     *
     * @param series  the series index (zero-based).
     *
     * @return The series.
     */
    public XYSeries getSeries(int series) {
        if ((series < 0) || (series >= getSeriesCount())) {
            throw new IllegalArgumentException("Series index out of bounds");
        }
        return (XYSeries) this.data.get(series);
    }

    /**
     * Returns the key for a series.
     *
     * @param series  the series index (zero-based).
     *
     * @return The key for a series.
     */
    public Comparable getSeriesKey(int series) {
        // defer argument checking
        return getSeries(series).getKey();
    }

    /**
     * Returns the number of items in the specified series.
     *
     * @param series  the series (zero-based index).
     *
     * @return The item count.
     */
    public int getItemCount(int series) {
        // defer argument checking
        return getSeries(series).getItemCount();
    }

    /**
     * Returns the x-value for the specified series and item.
     *
     * @param series  the series (zero-based index).
     * @param item  the item (zero-based index).
     *
     * @return The value.
     */
    public Number getX(int series, int item) {
        XYSeries ts = (XYSeries) this.data.get(series);
        XYDataItem xyItem = ts.getDataItem(item);
        return xyItem.getX();
    }

    /**
     * Returns the starting X value for the specified series and item.
     *
     * @param series  the series (zero-based index).
     * @param item  the item (zero-based index).
     *
     * @return The starting X value.
     */
    public Number getStartX(int series, int item) {
        return this.intervalDelegate.getStartX(series, item);
    }

    /**
     * Returns the ending X value for the specified series and item.
     *
     * @param series  the series (zero-based index).
     * @param item  the item (zero-based index).
     *
     * @return The ending X value.
     */
    public Number getEndX(int series, int item) {
        return this.intervalDelegate.getEndX(series, item);
    }

    /**
     * Returns the y-value for the specified series and item.
     *
     * @param series  the series (zero-based index).
     * @param index  the index of the item of interest (zero-based).
     *
     * @return The value (possibly <code>null</code>).
     */
    public Number getY(int series, int index) {

        XYSeries ts = (XYSeries) this.data.get(series);
        XYDataItem xyItem = ts.getDataItem(index);
        return xyItem.getY();

    }

    /**
     * Returns the starting Y value for the specified series and item.
     *
     * @param series  the series (zero-based index).
     * @param item  the item (zero-based index).
     *
     * @return The starting Y value.
     */
    public Number getStartY(int series, int item) {
        return getY(series, item);
    }

    /**
     * Returns the ending Y value for the specified series and item.
     *
     * @param series  the series (zero-based index).
     * @param item  the item (zero-based index).
     *
     * @return The ending Y value.
     */
    public Number getEndY(int series, int item) {
        return getY(series, item);
    }

    /**
     * Tests this collection for equality with an arbitrary object.
     *
     * @param obj  the object (<code>null</code> permitted).
     *
     * @return A boolean.
     */
    public boolean equals(Object obj) {
        /* 
         * XXX
         *  
         * what about  the interval delegate...?
         * The interval width etc wasn't considered
         * before, hence i did not add it here (AS)
         * 
         */

        if (obj == this) {
            return true;
        }
        if (!(obj instanceof XYSeriesCollection)) {
            return false;
        }
        XYSeriesCollection that = (XYSeriesCollection) obj;
        return ObjectUtilities.equal(this.data, that.data);
    }

    /**
     * Returns a hash code.
     * 
     * @return A hash code.
     */
    public int hashCode() {
        // Same question as for equals (AS)
        return (this.data != null ? this.data.hashCode() : 0);
    }
       
    /**
     * Returns the minimum x-value in the dataset.
     *
     * @param includeInterval  a flag that determines whether or not the
     *                         x-interval is taken into account.
     * 
     * @return The minimum value.
     */
    public double getDomainLowerBound(boolean includeInterval) {
        return this.intervalDelegate.getDomainLowerBound(includeInterval);
    }

    /**
     * Returns the maximum x-value in the dataset.
     *
     * @param includeInterval  a flag that determines whether or not the
     *                         x-interval is taken into account.
     * 
     * @return The maximum value.
     */
    public double getDomainUpperBound(boolean includeInterval) {
        return this.intervalDelegate.getDomainUpperBound(includeInterval);
    }

    /**
     * Returns the range of the values in this dataset's domain.
     *
     * @param includeInterval  a flag that determines whether or not the
     *                         x-interval is taken into account.
     * 
     * @return The range.
     */
    public Range getDomainBounds(boolean includeInterval) {
        if (includeInterval) {
            return this.intervalDelegate.getDomainBounds(includeInterval);
        }
        else {
            return DatasetUtilities.iterateDomainBounds(this, includeInterval);
        }
            
    }
    
    /**
     * Returns the interval width. This is used to calculate the start and end 
     * x-values, if/when the dataset is used as an {@link IntervalXYDataset}.  
     * 
     * @return The interval width.
     */
    public double getIntervalWidth() {
        return this.intervalDelegate.getIntervalWidth();
    }
    
    /**
     * Sets the interval width and sends a {@link DatasetChangeEvent} to all 
     * registered listeners.
     * 
     * @param width  the width (negative values not permitted).
     */
    public void setIntervalWidth(double width) {
        if (width < 0.0) {
            throw new IllegalArgumentException("Negative 'width' argument.");
        }
        this.intervalDelegate.setFixedIntervalWidth(width);
        fireDatasetChanged();
    }

    /**
     * Returns the interval position factor.  
     * 
     * @return The interval position factor.
     */
    public double getIntervalPositionFactor() {
        return this.intervalDelegate.getIntervalPositionFactor();
    }
    
    /**
     * Sets the interval position factor. This controls where the x-value is in
     * relation to the interval surrounding the x-value (0.0 means the x-value 
     * will be positioned at the start, 0.5 in the middle, and 1.0 at the end).
     * 
     * @param factor  the factor.
     */
    public void setIntervalPositionFactor(double factor) {
        this.intervalDelegate.setIntervalPositionFactor(factor);
        fireDatasetChanged();
    }
    
    /**
     * Returns whether the interval width is automatically calculated or not.
     * 
     * @return Whether the width is automatically calculated or not.
     */
    public boolean isAutoWidth() {
        return this.intervalDelegate.isAutoWidth();
    }

    /**
     * Sets the flag that indicates wether the interval width is automatically
     * calculated or not. 
     * 
     * @param b  a boolean.
     */
    public void setAutoWidth(boolean b) {
        this.intervalDelegate.setAutoWidth(b);
        fireDatasetChanged();
    }
    
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费看| 99在线精品观看| 一区二区免费视频| 欧美国产丝袜视频| 精品视频在线免费| 国产成人aaaa| 秋霞国产午夜精品免费视频| 国产精品美女视频| 欧美久久免费观看| 成人激情电影免费在线观看| 天天色综合天天| 欧美日韩国产一二三| 国产成人小视频| 久久 天天综合| 水蜜桃久久夜色精品一区的特点| 久久欧美一区二区| 欧美精品99久久久**| 高清在线成人网| 国产精品中文字幕日韩精品| 亚洲成a天堂v人片| 亚洲特级片在线| 久久人人爽爽爽人久久久| 精品少妇一区二区三区日产乱码 | 国产不卡视频在线播放| 青青草97国产精品免费观看无弹窗版| 一区二区三区四区国产精品| 亚洲精品欧美专区| 亚洲一区二区综合| 美女mm1313爽爽久久久蜜臀| 亚洲一区二区在线播放相泽| 亚洲国产日韩一级| 免费黄网站欧美| 国内精品第一页| 91视频国产观看| 欧美美女黄视频| 久久先锋影音av鲁色资源网| 中文字幕不卡三区| 一区二区三区中文字幕在线观看| 亚洲国产综合91精品麻豆| 久久成人免费电影| www.亚洲在线| 欧美日韩久久久| 国产精品视频一二| 五月婷婷色综合| 成人动漫精品一区二区| 久久久久久久综合| 一级做a爱片久久| 国产精品资源在线看| 欧美日韩一区 二区 三区 久久精品| 日韩免费高清av| 亚洲成人精品影院| 成人黄色网址在线观看| 欧美一区二区在线播放| 日韩美女久久久| 久99久精品视频免费观看| 一本大道久久a久久精品综合| 久久久久久久网| 国产精品99久久久久| 欧美日韩成人综合在线一区二区| 国产精品视频免费| 国产电影一区二区三区| 欧美精品一区二区在线观看| 国产尤物一区二区| 欧美一区午夜精品| 国产尤物一区二区在线| 亚洲国产精品99久久久久久久久| 久久精品99久久久| 日本一区二区三区久久久久久久久不| 久久精品国产亚洲a| 精品久久人人做人人爽| 韩国三级在线一区| 久久九九久精品国产免费直播| 国产一区视频导航| 亚洲精品国产a久久久久久| 欧美色偷偷大香| 美女脱光内衣内裤视频久久网站| 久久综合久久鬼色| 91网站黄www| 日日夜夜精品视频天天综合网| 国产欧美日韩中文久久| 91香蕉国产在线观看软件| 亚洲成人你懂的| 久久久久久久久久久久久久久99 | 中国av一区二区三区| 欧美少妇xxx| 成人免费毛片高清视频| 奇米综合一区二区三区精品视频| 国产三级一区二区三区| 欧美在线不卡一区| 国产精品一级片| 韩国v欧美v日本v亚洲v| 亚洲欧美色图小说| 久久精品夜夜夜夜久久| 日韩午夜电影在线观看| 在线精品亚洲一区二区不卡| 成人国产亚洲欧美成人综合网| 日韩成人一区二区三区在线观看| 国产欧美一区二区精品秋霞影院| 精品欧美一区二区在线观看| 欧美高清dvd| 欧美日韩亚洲综合| 欧洲av在线精品| 色八戒一区二区三区| proumb性欧美在线观看| 成人激情午夜影院| 成人午夜av电影| 国产成人精品免费| 成人免费毛片aaaaa**| 国产麻豆日韩欧美久久| 国产精一区二区三区| 国产久卡久卡久卡久卡视频精品| 精品一区二区精品| 成人午夜视频在线观看| 在线欧美小视频| 日韩精品中文字幕在线不卡尤物| 欧美成人精品高清在线播放| 日韩欧美电影在线| 中文字幕欧美三区| 一区二区三国产精华液| 男人的j进女人的j一区| 成人做爰69片免费看网站| 91视频精品在这里| 日韩女优毛片在线| 欧美国产97人人爽人人喊| 亚洲一区在线视频| 激情成人午夜视频| 在线免费一区三区| 欧美经典一区二区| 性做久久久久久久免费看| 国产在线精品一区在线观看麻豆| 成人一区二区三区| 日韩欧美一级片| 亚洲一区二区三区小说| 欧美最猛黑人xxxxx猛交| 久久精品一区二区三区不卡牛牛| 亚洲一线二线三线视频| 9人人澡人人爽人人精品| 久久人人爽人人爽| 久88久久88久久久| 欧美一区二区黄色| 亚洲大片免费看| 欧美视频在线观看一区| 一区二区三区四区乱视频| 92国产精品观看| 18欧美亚洲精品| 丁香婷婷综合色啪| 欧美不卡视频一区| 狠狠色综合日日| 精品国产露脸精彩对白| 国内一区二区视频| 久久欧美中文字幕| 国模大尺度一区二区三区| 久久久久青草大香线综合精品| 久久激情综合网| 国产色产综合色产在线视频| 国产大陆精品国产| 国产精品青草久久| 日本高清无吗v一区| 日韩有码一区二区三区| 欧美一区二区三区免费大片| 国产成人啪午夜精品网站男同| 欧美激情在线观看视频免费| 不卡高清视频专区| 亚洲影视在线观看| 久久免费看少妇高潮| 91福利精品第一导航| 裸体健美xxxx欧美裸体表演| 国产亚洲一区二区在线观看| 色综合中文综合网| 麻豆成人免费电影| 国产精品久久久爽爽爽麻豆色哟哟| 日本韩国欧美一区二区三区| 国产成人精品在线看| 亚洲午夜免费福利视频| 亚洲欧洲av一区二区三区久久| 欧美视频中文字幕| 成人高清免费观看| 国产乱一区二区| 日本美女一区二区三区视频| 中文字幕一区在线观看视频| 日韩情涩欧美日韩视频| 色婷婷av一区二区| 91网站在线播放| 成人三级伦理片| 国产高清无密码一区二区三区| 午夜电影一区二区| 成人免费一区二区三区在线观看| 亚洲精品在线免费观看视频| 欧美日韩精品综合在线| 欧美天天综合网| 欧美性生活大片视频| 一本高清dvd不卡在线观看| 91在线观看免费视频| 不卡高清视频专区| 91福利在线播放| 91麻豆精品国产综合久久久久久 | 久久99精品久久只有精品| 免费美女久久99| 久久精品国产**网站演员| 国产不卡在线视频|