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

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

?? combinedrangecategoryplot.java

?? 制作圖表的好工具
?? 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.]
 *
 * ------------------------------
 * CombinedRangeCategoryPlot.java
 * ------------------------------
 * (C) Copyright 2003-2005, by Object Refinery Limited.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   Nicolas Brodu;
 *
 * $Id: CombinedRangeCategoryPlot.java,v 1.13.2.1 2005/10/25 20:52:08 mungady Exp $
 *
 * Changes:
 * --------
 * 16-May-2003 : Version 1 (DG);
 * 08-Aug-2003 : Adjusted totalWeight in remove() method (DG);
 * 19-Aug-2003 : Implemented Cloneable (DG);
 * 11-Sep-2003 : Fix cloning support (subplots) (NB);
 * 15-Sep-2003 : Implemented PublicCloneable.  Fixed errors in cloning and 
 *               serialization (DG);
 * 16-Sep-2003 : Changed ChartRenderingInfo --> PlotRenderingInfo (DG);
 * 17-Sep-2003 : Updated handling of 'clicks' (DG);
 * 04-May-2004 : Added getter/setter methods for 'gap' attributes (DG);
 * 12-Nov-2004 : Implements the new Zoomable interface (DG);
 * 25-Nov-2004 : Small update to clone() implementation (DG);
 * 21-Feb-2005 : Fixed bug in remove() method (id = 1121172) (DG);
 * 21-Feb-2005 : The getLegendItems() method now returns the fixed legend
 *               items if set (DG);
 * 05-May-2005 : Updated draw() method parameters (DG);
 * 
 */
 
package org.jfree.chart.plot;

import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import org.jfree.chart.LegendItemCollection;
import org.jfree.chart.axis.AxisSpace;
import org.jfree.chart.axis.AxisState;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.event.PlotChangeEvent;
import org.jfree.chart.event.PlotChangeListener;
import org.jfree.data.Range;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.RectangleInsets;
import org.jfree.util.ObjectUtilities;
import org.jfree.util.PublicCloneable;

/**
 * A combined category plot where the range axis is shared.
 */
public class CombinedRangeCategoryPlot extends CategoryPlot 
                                       implements Zoomable,
                                                  Cloneable, PublicCloneable, 
                                                  Serializable,
                                                  PlotChangeListener {

    /** For serialization. */
    private static final long serialVersionUID = 7260210007554504515L;
    
    /** Storage for the subplot references. */
    private List subplots;

    /** Total weight of all charts. */
    private int totalWeight;

    /** The gap between subplots. */
    private double gap;

    /** Temporary storage for the subplot areas. */
    private transient Rectangle2D[] subplotArea;  // TODO: move to plot state

    /**
     * Default constructor.
     */
    public CombinedRangeCategoryPlot() {
        this(new NumberAxis());
    }
    
    /**
     * Creates a new plot.
     *
     * @param rangeAxis  the shared range axis.
     */
    public CombinedRangeCategoryPlot(ValueAxis rangeAxis) {
        super(null, null, rangeAxis, null);
        this.subplots = new java.util.ArrayList();
        this.totalWeight = 0;
        this.gap = 5.0;
    }

    /**
     * Returns the space between subplots.
     *
     * @return The gap (in Java2D units).
     */
    public double getGap() {
        return this.gap;
    }

    /**
     * Sets the amount of space between subplots and sends a 
     * {@link PlotChangeEvent} to all registered listeners.
     *
     * @param gap  the gap between subplots (in Java2D units).
     */
    public void setGap(double gap) {
        this.gap = gap;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Adds a subplot (with a default 'weight' of 1) and sends a 
     * {@link PlotChangeEvent} to all registered listeners.
     *
     * @param subplot  the subplot (<code>null</code> not permitted).
     */
    public void add(CategoryPlot subplot) {
        // defer argument checking
        add(subplot, 1);
    }

    /**
     * Adds a subplot and sends a {@link PlotChangeEvent} to all registered 
     * listeners.
     *
     * @param subplot  the subplot (<code>null</code> not permitted).
     * @param weight  the weight (must be >= 1).
     */
    public void add(CategoryPlot subplot, int weight) {
        if (subplot == null) {
            throw new IllegalArgumentException("Null 'subplot' argument.");
        }
        if (weight <= 0) {
            throw new IllegalArgumentException("Require weight >= 1.");
        }
        // store the plot and its weight
        subplot.setParent(this);
        subplot.setWeight(weight);
        subplot.setInsets(new RectangleInsets(0.0, 0.0, 0.0, 0.0));
        subplot.setRangeAxis(null);
        subplot.setOrientation(getOrientation());
        subplot.addChangeListener(this);
        this.subplots.add(subplot);
        this.totalWeight += weight;
        
        // configure the range axis...
        ValueAxis axis = getRangeAxis();
        if (axis != null) {
            axis.configure();
        }
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Removes a subplot from the combined chart.
     *
     * @param subplot  the subplot (<code>null</code> not permitted).
     */
    public void remove(CategoryPlot subplot) {
        if (subplot == null) {
            throw new IllegalArgumentException(" Null 'subplot' argument.");   
        }
        int position = -1;
        int size = this.subplots.size();
        int i = 0;
        while (position == -1 && i < size) {
            if (this.subplots.get(i) == subplot) {
                position = i;
            }
            i++;
        }
        if (position != -1) {
            this.subplots.remove(position);
            subplot.setParent(null);
            subplot.removeChangeListener(this);
            this.totalWeight -= subplot.getWeight();
        
            ValueAxis range = getRangeAxis();
            if (range != null) {
                range.configure();
            }

            ValueAxis range2 = getRangeAxis(1);
            if (range2 != null) {
                range2.configure();
            }
            notifyListeners(new PlotChangeEvent(this));
        }
    }

    /**
     * Returns the list of subplots.
     *
     * @return The list (unmodifiable).
     */
    public List getSubplots() {
        return Collections.unmodifiableList(this.subplots);
    }

    /**
     * Calculates the space required for the axes.
     * 
     * @param g2  the graphics device.
     * @param plotArea  the plot area.
     * 
     * @return The space required for the axes.
     */
    protected AxisSpace calculateAxisSpace(Graphics2D g2, 
                                           Rectangle2D plotArea) {
        
        AxisSpace space = new AxisSpace();  
        PlotOrientation orientation = getOrientation();
        
        // work out the space required by the domain axis...
        AxisSpace fixed = getFixedRangeAxisSpace();
        if (fixed != null) {
            if (orientation == PlotOrientation.VERTICAL) {
                space.setLeft(fixed.getLeft());
                space.setRight(fixed.getRight());
            }
            else if (orientation == PlotOrientation.HORIZONTAL) {
                space.setTop(fixed.getTop());
                space.setBottom(fixed.getBottom());                
            }
        }
        else {
            ValueAxis valueAxis = getRangeAxis();
            RectangleEdge valueEdge = Plot.resolveRangeAxisLocation(
                getRangeAxisLocation(), orientation
            );
            if (valueAxis != null) {
                space = valueAxis.reserveSpace(
                    g2, this, plotArea, valueEdge, space
                );
            }
        }
        
        Rectangle2D adjustedPlotArea = space.shrink(plotArea, null);
        // work out the maximum height or width of the non-shared axes...
        int n = this.subplots.size();

        // calculate plotAreas of all sub-plots, maximum vertical/horizontal 
        // axis width/height
        this.subplotArea = new Rectangle2D[n];
        double x = adjustedPlotArea.getX();
        double y = adjustedPlotArea.getY();
        double usableSize = 0.0;
        if (orientation == PlotOrientation.VERTICAL) {
            usableSize = adjustedPlotArea.getWidth() - this.gap * (n - 1);
        }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久亚洲综合影院红桃 | 日韩精品一区二| 韩国精品一区二区| 成人h动漫精品一区二| 国产夜色精品一区二区av| 国内一区二区视频| 久久久99精品久久| 国产91色综合久久免费分享| 中日韩av电影| 欧美中文字幕久久 | 亚洲欧美一区二区不卡| 色噜噜狠狠色综合欧洲selulu| 亚洲免费观看视频| 欧美军同video69gay| 国产一区二区三区综合| 日本一区二区三区四区在线视频| 成人激情免费网站| 亚洲午夜免费电影| 欧美日韩国产系列| 韩国av一区二区三区四区| 国产精品视频九色porn| 欧美性极品少妇| 香蕉久久一区二区不卡无毒影院 | 成人av免费网站| 午夜影院在线观看欧美| 久久老女人爱爱| 在线观看免费亚洲| 国产专区欧美精品| 亚洲一区中文日韩| 久久美女高清视频| 欧美性猛交xxxx乱大交退制版| 韩国午夜理伦三级不卡影院| 国产精品不卡在线观看| 欧美日韩精品二区第二页| 美女视频网站久久| 亚洲品质自拍视频| 久久综合色天天久久综合图片| 91黄色激情网站| 国产一区在线不卡| 日韩国产欧美三级| 亚洲美女偷拍久久| 久久久久9999亚洲精品| 欧美日本不卡视频| 成人免费毛片片v| 蜜臀久久久久久久| 亚洲精品国产a| 日韩欧美国产成人一区二区| 成人av午夜影院| 激情综合亚洲精品| 日韩和欧美的一区| 亚洲精品免费在线| 国产精品乱人伦| 久久久精品欧美丰满| 91精品国产欧美一区二区成人| 91免费观看视频| 成人亚洲一区二区一| 国产一区二区在线观看免费| 久久精品国产999大香线蕉| 亚洲欧洲精品一区二区三区| 久久久久久久综合色一本| 91精品国产黑色紧身裤美女| 欧美在线色视频| 色综合中文字幕| 不卡一区二区三区四区| 国产河南妇女毛片精品久久久 | 国产精品一区二区无线| 日韩1区2区3区| 五月天亚洲婷婷| 一区二区免费在线播放| 樱桃视频在线观看一区| 亚洲免费观看高清完整版在线| 中文字幕中文字幕一区二区| 国产精品色一区二区三区| 久久精品亚洲精品国产欧美| 欧美一区二区三区影视| 911精品产国品一二三产区| 色婷婷av一区二区三区大白胸 | 岛国一区二区在线观看| 国产精品亚洲专一区二区三区| 国产一区二区在线观看视频| 国产一区二区三区免费观看| 黄色小说综合网站| 麻豆91在线观看| 国产乱人伦偷精品视频免下载| 免费看欧美美女黄的网站| 视频在线观看一区| 亚洲高清免费观看| 亚洲成人www| 午夜视频久久久久久| 亚洲一区电影777| 日韩精品免费视频人成| 天天综合网天天综合色| 六月婷婷色综合| 久久成人久久鬼色| 日本欧美一区二区| 国产在线精品不卡| 丁香啪啪综合成人亚洲小说 | 色八戒一区二区三区| 精品视频1区2区3区| 欧美一级高清大全免费观看| 精品国产一区a| 国产亚洲成av人在线观看导航| 国产精品毛片久久久久久| 亚洲欧美日韩国产另类专区| 亚洲国产精品尤物yw在线观看| 麻豆一区二区在线| 成人中文字幕电影| k8久久久一区二区三区| 欧美三级视频在线| 日韩欧美一级精品久久| 国产精品成人在线观看| 亚洲在线中文字幕| 久久精品国产亚洲高清剧情介绍| 国产精品77777| 日本高清成人免费播放| 91在线国产福利| 色婷婷久久综合| 日韩一级完整毛片| 久久精品人人爽人人爽| 一区二区视频在线| 国产在线不卡一区| 91免费看视频| 欧美日韩亚洲综合一区二区三区| 国产午夜精品一区二区三区视频| 亚洲另类一区二区| 精品一区二区三区在线播放| 不卡大黄网站免费看| 欧美亚洲国产怡红院影院| 在线播放视频一区| 久久久久久综合| 亚洲综合色婷婷| 蜜臂av日日欢夜夜爽一区| 91在线精品一区二区三区| 在线视频国产一区| 久久精品欧美一区二区三区麻豆| 午夜精品久久一牛影视| 黄一区二区三区| 欧美日韩精品一区二区在线播放| 日本一区二区成人在线| 日韩电影一区二区三区| 91美女精品福利| 久久精品综合网| 石原莉奈在线亚洲三区| 97久久精品人人做人人爽50路| 久久久精品国产免大香伊| 亚洲国产综合视频在线观看| av电影一区二区| 久久久青草青青国产亚洲免观| 亚洲最色的网站| 成人手机在线视频| 91精品国产手机| 亚洲午夜精品网| 国产精品 日产精品 欧美精品| 欧美日韩一区二区三区高清 | 91精品国产日韩91久久久久久| 中文字幕一区二区三区四区不卡| 精品无人码麻豆乱码1区2区| 在线视频观看一区| 一区二区三区中文字幕精品精品| 成人免费看的视频| 欧美激情一区二区三区四区| 激情欧美一区二区三区在线观看| 欧美一区二视频| 蜜桃av噜噜一区二区三区小说| 91.xcao| 天天综合天天综合色| 精品视频一区二区三区免费| 亚洲制服丝袜一区| 欧美日韩日日骚| 亚洲成人av资源| 欧美精品精品一区| 日欧美一区二区| 91精品一区二区三区在线观看| 日韩黄色免费电影| 欧美久久久久免费| 男男成人高潮片免费网站| 日韩一二三四区| 蜜臀a∨国产成人精品| 欧美变态凌虐bdsm| 国产一区二区久久| 久久综合九色综合欧美就去吻| 国产伦精品一区二区三区视频青涩| 精品久久久久一区二区国产| 国产精品综合视频| 日本一区二区久久| 一本大道av伊人久久综合| 亚洲综合一二三区| 欧美日韩二区三区| 久草这里只有精品视频| 欧美国产成人精品| 色综合久久中文字幕综合网| 一区二区三区不卡在线观看 | 高清国产一区二区三区| 国产精品免费av| 欧美性大战久久| 日本欧美一区二区在线观看| 精品伦理精品一区| 国产99久久久精品| 艳妇臀荡乳欲伦亚洲一区| 91精品福利在线一区二区三区 |