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

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

?? categorytablexydataset.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? 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.]
 *
 * ---------------------------
 * CategoryTableXYDataset.java
 * ---------------------------
 * (C) Copyright 2004, 2005, by Andreas Schroeder and Contributors.
 *
 * Original Author:  Andreas Schroeder;
 * Contributor(s):   David Gilbert (for Object Refinery Limited);
 *
 * $Id: CategoryTableXYDataset.java,v 1.7.2.2 2005/10/25 21:36:51 mungady Exp $
 *
 * Changes
 * -------
 * 31-Mar-2004 : Version 1 (AS);
 * 05-May-2004 : Now extends AbstractIntervalXYDataset (DG);
 * 15-Jul-2004 : Switched interval access method names (DG);
 * 18-Aug-2004 : Moved from org.jfree.data --> org.jfree.data.xy (DG);
 * 17-Nov-2004 : Updates required by changes to DomainInfo interface (DG);
 * 11-Jan-2005 : Removed deprecated code in preparation for 1.0.0 release (DG);
 * 05-Oct-2005 : Made the interval delegate a dataset change listener (DG);
 *
 */

package org.jfree.data.xy;

import org.jfree.data.DefaultKeyedValues2D;
import org.jfree.data.DomainInfo;
import org.jfree.data.Range;
import org.jfree.data.general.DatasetChangeEvent;
import org.jfree.data.general.DatasetUtilities;

/**
 * An implementation variant of the {@link TableXYDataset} where every series 
 * shares the same x-values (required for generating stacked area charts). 
 * This implementation uses a {@link DefaultKeyedValues2D} Object as backend 
 * implementation and is hence more "category oriented" than the {@link 
 * DefaultTableXYDataset} implementation.
 * <p>
 * This implementation provides no means to remove data items yet.
 * This is due to the lack of such facility in the DefaultKeyedValues2D class.
 * <p>
 * This class also implements the {@link IntervalXYDataset} interface, but this
 * implementation is provisional. 
 * 
 * @author Andreas Schroeder
 */
public class CategoryTableXYDataset extends AbstractIntervalXYDataset
                                    implements TableXYDataset, 
                                               IntervalXYDataset, 
                                               DomainInfo {
    
    /**
     * The backing data structure.
     */
    private DefaultKeyedValues2D values;
    
    /** A delegate for controlling the interval width. */
    private IntervalXYDelegate intervalDelegate;

    /**
     * Creates a new empty CategoryTableXYDataset.
     */
    public CategoryTableXYDataset() {
        this.values = new DefaultKeyedValues2D(true);
        this.intervalDelegate = new IntervalXYDelegate(this);
        addChangeListener(this.intervalDelegate);
    }

    /**
     * Adds a data item to this dataset and sends a {@link DatasetChangeEvent} 
     * to all registered listeners.
     * 
     * @param x  the x value.
     * @param y  the y value.
     * @param seriesName  the name of the series to add the data item.
     */
    public void add(double x, double y, String seriesName) {
        add(new Double(x), new Double(y), seriesName, true);
    }
    
    /**
     * Adds a data item to this dataset and, if requested, sends a 
     * {@link DatasetChangeEvent} to all registered listeners.
     * 
     * @param x  the x value.
     * @param y  the y value.
     * @param seriesName  the name of the series to add the data item.
     * @param notify  notify listeners?
     */
    public void add(Number x, Number y, String seriesName, boolean notify) {
        this.values.addValue(y, (Comparable) x, seriesName);
        if (notify) {
            fireDatasetChanged();
        }
    }

    /**
     * Removes a value from the dataset.
     * 
     * @param x  the x-value.
     * @param seriesName  the series name.
     */
    public void remove(double x, String seriesName) {
        remove(new Double(x), seriesName, true);
    }
    
    /**
     * Removes an item from the dataset.
     * 
     * @param x  the x-value.
     * @param seriesName  the series name.
     * @param notify  notify listeners?
     */
    public void remove(Number x, String seriesName, boolean notify) {
        this.values.removeValue((Comparable) x, seriesName);
        if (notify) {
            fireDatasetChanged();
        }
    }


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

    /**
     * Returns the key for a series.
     *
     * @param series  the series index (zero-based).
     *
     * @return The key for a series.
     */
    public Comparable getSeriesKey(int series) {
        return this.values.getColumnKey(series);
    }

    /**
     * Returns the number of x values in the dataset.
     *
     * @return The item count.
     */
    public int getItemCount() {
        return this.values.getRowCount();
    }

    /**
     * Returns the number of items in the specified series.
     * Returns the same as {@link CategoryTableXYDataset#getItemCount()}.
     *
     * @param series  the series index (zero-based).
     *
     * @return The item count.
     */
    public int getItemCount(int series) {
        return getItemCount();  // all series have the same number of items in 
                                // this dataset
    }

    /**
     * Returns the x-value for the specified series and item.
     *
     * @param series  the series index (zero-based).
     * @param item  the item index (zero-based).
     *
     * @return The value.
     */
    public Number getX(int series, int item) {
        return (Number) this.values.getRowKey(item);
    }

    /**
     * Returns the starting X value for the specified series and item.
     *
     * @param series  the series index (zero-based).
     * @param item  the item index (zero-based).
     *
     * @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 index (zero-based).
     * @param item  the item index (zero-based).
     *
     * @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 index (zero-based).
     * @param item  the item index (zero-based).
     *
     * @return The y value (possibly <code>null</code>).
     */
    public Number getY(int series, int item) {
        return this.values.getValue(item, series);
    }

    /**
     * Returns the starting Y value for the specified series and item.
     *
     * @param series  the series index (zero-based).
     * @param item  the item index (zero-based).
     *
     * @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 index (zero-based).
     * @param item  the item index (zero-based).
     *
     * @return The ending Y value.
     */
    public Number getEndY(int series, int item) {
        return getY(series, item);
    }
    
    /**
     * 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 position factor. 
     * 
     * @return The interval position factor.
     */
    public double getIntervalPositionFactor() {
        return this.intervalDelegate.getIntervalPositionFactor();
    }

    /**
     * Sets the interval position factor. Must be between 0.0 and 1.0 inclusive.
     * If the factor is 0.5, the gap is in the middle of the x values. If it
     * is lesser than 0.5, the gap is farther to the left and if greater than
     * 0.5 it gets farther to the right.
     *  
     * @param d  the new interval position factor.
     */
    public void setIntervalPositionFactor(double d) {
        this.intervalDelegate.setIntervalPositionFactor(d);
        fireDatasetChanged();
    }

    /**
     * Returns the full interval width. 
     * 
     * @return The interval width to use.
     */
    public double getIntervalWidth() {
        return this.intervalDelegate.getIntervalWidth();
    }

    /**
     * Sets the interval width to a fixed value, and sends a 
     * {@link DatasetChangeEvent} to all registered listeners. 
     * 
     * @param d  the new interval width (must be > 0).
     */
    public void setIntervalWidth(double d) {
        this.intervalDelegate.setFixedIntervalWidth(d);
        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 whether the interval width is automatically
     * calculated or not. 
     * 
     * @param b  the flag.
     */
    public void setAutoWidth(boolean b) {
        this.intervalDelegate.setAutoWidth(b);
        fireDatasetChanged();
    }
    
    /**
     * Tests this dataset for equality with an arbitrary object.
     * 
     * @param obj  the object (<code>null</code> permitted).
     * 
     * @return A boolean.
     */
    public boolean equals(Object obj) {
        if (!(obj instanceof CategoryTableXYDataset)) {
            return false;
        }
        CategoryTableXYDataset that = (CategoryTableXYDataset) obj;
        if (!this.intervalDelegate.equals(that.intervalDelegate)) {
            return false;
        }
        if (!this.values.equals(that.values)) {
            return false;
        }
        return true;
    }
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区香蕉| 欧美精品一二三四| 欧美日韩亚洲综合一区二区三区| 欧美videossexotv100| 亚洲男人天堂av| 成人夜色视频网站在线观看| 欧美一区国产二区| 亚洲成在线观看| 91免费看片在线观看| 久久影视一区二区| 免费在线看成人av| 欧美日韩综合在线免费观看| 中文字幕制服丝袜成人av| 国产麻豆精品视频| 精品国产青草久久久久福利| 爽好久久久欧美精品| 91精彩视频在线观看| 中文字幕日韩av资源站| 成人午夜视频福利| 中文字幕欧美三区| 国产盗摄女厕一区二区三区| 精品第一国产综合精品aⅴ| 免费观看在线综合| 日韩精品一区二区三区中文不卡| 亚洲第一主播视频| 欧美伊人久久久久久午夜久久久久| 1000部国产精品成人观看| 国产aⅴ综合色| 中文字幕的久久| 成人福利视频在线看| 国产精品黄色在线观看| av在线不卡电影| 亚洲情趣在线观看| 欧美日韩国产区一| 视频在线在亚洲| 日韩欧美视频一区| 国产精一品亚洲二区在线视频| 精品福利一区二区三区| 国产乱子伦视频一区二区三区| 国产日韩精品一区| 91在线无精精品入口| 亚洲精品视频免费观看| 欧洲国内综合视频| 免费观看91视频大全| 精品国产精品网麻豆系列| 国产一区 二区 三区一级| 国产亚洲人成网站| 99久久国产综合精品女不卡| 一区二区三区不卡视频| 欧美一级xxx| 国产精品18久久久久久vr| 中文字幕在线免费不卡| 在线观看免费亚洲| 麻豆精品视频在线观看视频| 久久综合99re88久久爱| 99久久婷婷国产综合精品| 亚洲一区在线视频| 精品精品欲导航| 91老师片黄在线观看| 亚洲高清在线精品| 久久久久亚洲蜜桃| 日本乱人伦一区| 精品一区二区免费| 亚洲九九爱视频| 精品少妇一区二区三区日产乱码| 成人动漫视频在线| 日韩福利视频导航| 一区免费观看视频| 日韩女优毛片在线| 色诱亚洲精品久久久久久| 日本视频一区二区三区| 国产精品日韩成人| 91精品国产欧美一区二区18| 不卡一区中文字幕| 另类专区欧美蜜桃臀第一页| 中文字幕在线免费不卡| 精品国产一区二区三区四区四 | 一区二区三区精品久久久| 欧美一级欧美一级在线播放| fc2成人免费人成在线观看播放| 日韩在线一区二区| 亚洲精品一二三区| 久久久久久亚洲综合影院红桃| 在线观看亚洲一区| 99re6这里只有精品视频在线观看| 日本aⅴ亚洲精品中文乱码| 亚洲靠逼com| 国产精品久久久久久福利一牛影视| 555夜色666亚洲国产免| 91影视在线播放| 粉嫩av一区二区三区在线播放| 日本不卡视频一二三区| 亚洲永久免费视频| 国产精品久久国产精麻豆99网站| 欧美mv日韩mv国产网站app| 日本福利一区二区| 99久久精品免费看国产免费软件| 韩国午夜理伦三级不卡影院| 五月婷婷综合网| 亚洲一区二区三区中文字幕| 国产精品久久国产精麻豆99网站| 久久综合国产精品| 久久久久久久久一| 久久众筹精品私拍模特| 精品久久久久一区| 精品免费99久久| 欧美一级夜夜爽| 欧美一区二区三区不卡| 欧美日韩不卡一区| 欧美肥妇bbw| 91麻豆精品91久久久久久清纯 | 午夜av区久久| 午夜精品久久久久久久久| 夜夜爽夜夜爽精品视频| 亚洲黄色录像片| 亚洲一区二区三区在线看| 亚洲综合免费观看高清完整版在线 | 久久免费午夜影院| 国产三级一区二区| 中文一区在线播放| 中文字幕一区二区三区在线播放 | 日韩国产一区二| 日韩电影网1区2区| 美腿丝袜亚洲色图| 国产伦理精品不卡| 波多野洁衣一区| 99久久国产综合精品麻豆| 在线这里只有精品| 欧美日韩高清在线| 日韩三区在线观看| 久久九九国产精品| 亚洲免费av在线| 日韩精品福利网| 国产毛片精品视频| 色综合一区二区三区| 色久综合一二码| 日韩欧美视频在线| 国产精品久久久99| 日韩一区欧美二区| 国产自产高清不卡| 99久久国产免费看| 91麻豆精品国产91久久久资源速度 | 日韩电影在线免费观看| 韩国女主播一区二区三区| 波多野结衣中文字幕一区 | 色狠狠桃花综合| 日韩精品一区二区三区在线| 中文成人av在线| 亚洲成人av在线电影| 精品无码三级在线观看视频 | 亚洲综合一区在线| 久久se精品一区二区| jiyouzz国产精品久久| 91麻豆精品国产综合久久久久久 | 精品国产3级a| 亚洲精品中文字幕乱码三区 | 国产欧美日本一区视频| 午夜伊人狠狠久久| 粉嫩13p一区二区三区| 欧美美女网站色| 亚洲欧洲av色图| 久久成人av少妇免费| 欧美午夜理伦三级在线观看| 精品国产免费视频| 亚洲一二三区在线观看| 国产经典欧美精品| 日韩亚洲欧美成人一区| 亚洲特黄一级片| 国产高清成人在线| 欧美一区二区三区日韩视频| 亚洲三级在线观看| 国产一区二区三区在线观看免费| 欧美另类z0zxhd电影| 国产精品初高中害羞小美女文| 久久精品国产精品亚洲红杏| 欧美视频精品在线| 专区另类欧美日韩| 成人av在线播放网站| 国产亚洲人成网站| 精品无人码麻豆乱码1区2区| 3d动漫精品啪啪一区二区竹菊| 亚洲欧美日韩国产成人精品影院| 国产福利一区在线观看| 日韩精品一区二区三区老鸭窝| 亚洲高清免费观看高清完整版在线观看| 国产激情视频一区二区三区欧美| 日韩精品一区在线| 蜜臀av一区二区三区| 欧美一二区视频| 麻豆国产精品官网| 精品久久一区二区三区| 久久综合综合久久综合| 日韩一级精品视频在线观看| 香蕉久久夜色精品国产使用方法 | 麻豆精品视频在线观看免费 | 国产精品国产a| 成人精品一区二区三区四区| 国产日韩欧美一区二区三区乱码| 国模套图日韩精品一区二区 | 亚洲国产一区二区三区青草影视|