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

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

?? pieplot.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
    private PieSectionLabelGenerator legendLabelGenerator;
    
    /** A tool tip generator for the legend. */
    private PieSectionLabelGenerator legendLabelToolTipGenerator;
    
    /** 
     * A flag that controls whether <code>null</code> values are ignored.  
     */
    private boolean ignoreNullValues;
    
    /**
     * A flag that controls whether zero values are ignored.
     */
    private boolean ignoreZeroValues;

    /** The legend item shape. */
    private transient Shape legendItemShape;
    
    /**
     * The smallest arc angle that will get drawn (this is to avoid a bug in 
     * various Java implementations that causes the JVM to crash).  See this 
     * link for details:
     *
     * http://www.jfree.org/phpBB2/viewtopic.php?t=2707
     *
     * ...and this bug report in the Java Bug Parade:
     *
     * http://developer.java.sun.com/developer/bugParade/bugs/4836495.html
     */
    private double minimumArcAngleToDraw;

    /** The resourceBundle for the localization. */
    protected static ResourceBundle localizationResources =
        ResourceBundle.getBundle("org.jfree.chart.plot.LocalizationBundle");

    /**
     * Creates a new plot.  The dataset is initially set to <code>null</code>.
     */
    public PiePlot() {
        this(null);
    }

    /**
     * Creates a plot that will draw a pie chart for the specified dataset.
     *
     * @param dataset  the dataset (<code>null</code> permitted).
     */
    public PiePlot(PieDataset dataset) {
        super();
        this.dataset = dataset;
        if (dataset != null) {
            dataset.addChangeListener(this);
        }
        this.pieIndex = 0;
        
        this.interiorGap = DEFAULT_INTERIOR_GAP;
        this.circular = true;
        this.startAngle = DEFAULT_START_ANGLE;
        this.direction = Rotation.CLOCKWISE;
        this.minimumArcAngleToDraw = DEFAULT_MINIMUM_ARC_ANGLE_TO_DRAW;
        
        this.sectionPaint = null;
        this.sectionPaintList = new PaintList();
        this.baseSectionPaint = null;

        this.sectionOutlinesVisible = true;
        this.sectionOutlinePaint = null;
        this.sectionOutlinePaintList = new PaintList();
        this.baseSectionOutlinePaint = DEFAULT_OUTLINE_PAINT;

        this.sectionOutlineStroke = null;
        this.sectionOutlineStrokeList = new StrokeList();
        this.baseSectionOutlineStroke = DEFAULT_OUTLINE_STROKE;
        
        this.explodePercentages = new ObjectList();

        this.labelGenerator = new StandardPieSectionLabelGenerator();
        this.labelFont = DEFAULT_LABEL_FONT;
        this.labelPaint = DEFAULT_LABEL_PAINT;
        this.labelBackgroundPaint = DEFAULT_LABEL_BACKGROUND_PAINT;
        this.labelOutlinePaint = DEFAULT_LABEL_OUTLINE_PAINT;
        this.labelOutlineStroke = DEFAULT_LABEL_OUTLINE_STROKE;
        this.labelShadowPaint = DEFAULT_LABEL_SHADOW_PAINT;
        this.labelLinksVisible = true;
        
        this.toolTipGenerator = null;
        this.urlGenerator = null;
        this.legendLabelGenerator = new StandardPieSectionLabelGenerator();
        this.legendLabelToolTipGenerator = null;
        this.legendItemShape = Plot.DEFAULT_LEGEND_ITEM_CIRCLE;
        
        this.ignoreNullValues = false;
        this.ignoreZeroValues = false;
    }

    /**
     * Returns the dataset.
     *
     * @return The dataset (possibly <code>null</code>).
     */
    public PieDataset getDataset() {
        return this.dataset;
    }

    /**
     * Sets the dataset and sends a {@link DatasetChangeEvent} to 'this'.
     *
     * @param dataset  the dataset (<code>null</code> permitted).
     */
    public void setDataset(PieDataset dataset) {
        // if there is an existing dataset, remove the plot from the list of 
        // change listeners...
        PieDataset existing = this.dataset;
        if (existing != null) {
            existing.removeChangeListener(this);
        }

        // set the new dataset, and register the chart as a change listener...
        this.dataset = dataset;
        if (dataset != null) {
            setDatasetGroup(dataset.getGroup());
            dataset.addChangeListener(this);
        }

        // send a dataset change event to self...
        DatasetChangeEvent event = new DatasetChangeEvent(this, dataset);
        datasetChanged(event);
    }
    
    /**
     * Returns the pie index (this is used by the {@link MultiplePiePlot} class
     * to track subplots).
     * 
     * @return The pie index.
     */
    public int getPieIndex() {
        return this.pieIndex;
    }
    
    /**
     * Sets the pie index (this is used by the {@link MultiplePiePlot} class to 
     * track subplots).
     * 
     * @param index  the index.
     */
    public void setPieIndex(int index) {
        this.pieIndex = index;
    }
    
    /**
     * Returns the start angle for the first pie section.  This is measured in 
     * degrees starting from 3 o'clock and measuring anti-clockwise.
     *
     * @return The start angle.
     */
    public double getStartAngle() {
        return this.startAngle;
    }

    /**
     * Sets the starting angle and sends a {@link PlotChangeEvent} to all 
     * registered listeners.  The initial default value is 90 degrees, which 
     * corresponds to 12 o'clock.  A value of zero corresponds to 3 o'clock...
     * this is the encoding used by Java's Arc2D class.
     *
     * @param angle  the angle (in degrees).
     */
    public void setStartAngle(double angle) {
        this.startAngle = angle;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the direction in which the pie sections are drawn (clockwise or 
     * anti-clockwise).
     *
     * @return The direction (never <code>null</code>).
     */
    public Rotation getDirection() {
        return this.direction;
    }

    /**
     * Sets the direction in which the pie sections are drawn and sends a 
     * {@link PlotChangeEvent} to all registered listeners.
     *
     * @param direction  the direction (<code>null</code> not permitted).
     */
    public void setDirection(Rotation direction) {
        if (direction == null) {
            throw new IllegalArgumentException("Null 'direction' argument.");
        }
        this.direction = direction;
        notifyListeners(new PlotChangeEvent(this));

    }

    /**
     * Returns the interior gap, measured as a percentage of the available 
     * drawing space.
     *
     * @return The gap (as a percentage of the available drawing space).
     */
    public double getInteriorGap() {
        return this.interiorGap;
    }

    /**
     * Sets the interior gap and sends a {@link PlotChangeEvent} to all 
     * registered listeners.  This controls the space between the edges of the 
     * pie plot and the plot area itself (the region where the section labels 
     * appear).
     *
     * @param percent  the gap (as a percentage of the available drawing space).
     */
    public void setInteriorGap(double percent) {

        // check arguments...
        if ((percent < 0.0) || (percent > MAX_INTERIOR_GAP)) {
            throw new IllegalArgumentException(
                "Invalid 'percent' (" + percent + ") argument.");
        }

        // make the change...
        if (this.interiorGap != percent) {
            this.interiorGap = percent;
            notifyListeners(new PlotChangeEvent(this));
        }

    }

    /**
     * Returns a flag indicating whether the pie chart is circular, or
     * stretched into an elliptical shape.
     *
     * @return A flag indicating whether the pie chart is circular.
     */
    public boolean isCircular() {
        return this.circular;
    }

    /**
     * A flag indicating whether the pie chart is circular, or stretched into
     * an elliptical shape.
     *
     * @param flag  the new value.
     */
    public void setCircular(boolean flag) {
        setCircular(flag, true);
    }

    /**
     * Sets the circular attribute and, if requested, sends a 
     * {@link PlotChangeEvent} to all registered listeners.
     *
     * @param circular  the new value of the flag.
     * @param notify  notify listeners?
     */
    public void setCircular(boolean circular, boolean notify) {
        this.circular = circular;
        if (notify) {
            notifyListeners(new PlotChangeEvent(this));   
        }
    }

    /**
     * Returns the flag that controls whether <code>null</code> values in the 
     * dataset are ignored.  
     * 
     * @return A boolean.
     */
    public boolean getIgnoreNullValues() {
        return this.ignoreNullValues;   
    }
    
    /**
     * Sets a flag that controls whether <code>null</code> values are ignored, 
     * and sends a {@link PlotChangeEvent} to all registered listeners.  At 
     * present, this only affects whether or not the key is presented in the 
     * legend.
     * 
     * @param flag  the flag.
     */
    public void setIgnoreNullValues(boolean flag) {
        this.ignoreNullValues = flag;
        notifyListeners(new PlotChangeEvent(this));
    }
    
    /**
     * Returns the flag that controls whether zero values in the 
     * dataset are ignored.  
     * 
     * @return A boolean.
     */
    public boolean getIgnoreZeroValues() {
        return this.ignoreZeroValues;   
    }
    
    /**
     * Sets a flag that controls whether zero values are ignored, 
     * and sends a {@link PlotChangeEvent} to all registered listeners.  This 
     * only affects whether or not a label appears for the non-visible
     * pie section.
     * 
     * @param flag  the flag.
     */
    public void setIgnoreZeroValues(boolean flag) {
        this.ignoreZeroValues = flag;
        notifyListeners(new PlotChangeEvent(this));
    }
    
    //// SECTION PAINT ////////////////////////////////////////////////////////

    /**
     * Returns the paint for ALL sections in the plot.
     *
     * @return The paint (possibly <code>null</code>).
     */
    public Paint getSectionPaint() {
        return this.sectionPaint;
    }

    /**
     * Sets the paint for ALL sections in the plot.  If this is set to
     * </code>null</code>, then a list of paints is used instead (to allow
     * different colors to be used for each section).
     *
     * @param paint  the paint (<code>null</code> permitted).
     */
    public void setSectionPaint(Paint paint) {
        this.sectionPaint = paint;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the paint for the specified section.
     * 
     * @param section  the section index (zero-based).
     * 
     * @return The paint (never <code>null</code>).
     */
    public Paint getSectionPaint(int section) {
        
        // return the override, if there is one...
        if (this.sectionPaint != null) {
            return this.sectionPaint;
        }

        // otherwise look up the paint list
        Paint result = this.sectionPaintList.getPaint(section);
        if (result == null) {
            DrawingSupplier supplier = getDrawingSupplier();
            if (supplier != null) {
                Paint p = supplier.getNextPaint();
                this.sectionPaintList.setPaint(section, p);
                result = p;
            }
            else {
                result = this.baseSectionPaint;
            }
        }
        return result;
       
    }
    
    /**
     * Sets the paint used to fill a section of the pie and sends a 
     * {@link PlotChangeEvent} to all registered listeners.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2021国产精品久久精品| 日韩电影免费一区| 日韩精品福利网| 成人黄页毛片网站| 欧美videossexotv100| 亚洲免费av高清| 国产一区在线精品| 欧美日韩一区二区电影| 国产精品久久久久久久浪潮网站| 午夜精品一区二区三区免费视频| 成人av小说网| 久久免费国产精品| 久久成人免费电影| 91麻豆精品91久久久久久清纯| 精品亚洲国内自在自线福利| 欧美性生交片4| 亚洲免费视频成人| 不卡的电影网站| 国产精品久久久久久妇女6080| 久久精品av麻豆的观看方式| 欧美日韩第一区日日骚| 亚洲一区二区三区小说| 91国内精品野花午夜精品| 中文字幕一区在线观看| 国产成人在线看| 精品99一区二区| 国内精品在线播放| 久久这里只有精品6| 黄页网站大全一区二区| 欧美精品一区二区三区很污很色的| 爽好多水快深点欧美视频| 精品视频在线免费看| 亚洲综合成人网| 欧美午夜一区二区| 日本欧美加勒比视频| 欧美一区二区视频在线观看| 美女精品一区二区| 精品毛片乱码1区2区3区| 国内成人自拍视频| 久久精品视频网| www.欧美.com| 一区二区成人在线观看| 91精品蜜臀在线一区尤物| 久久成人免费电影| 国产欧美日韩卡一| 色综合久久88色综合天天| 亚洲成人手机在线| 日韩美女在线视频| 国产成人综合网站| 亚洲女人的天堂| 制服丝袜中文字幕亚洲| 国产一区二区影院| 亚洲欧美成aⅴ人在线观看 | 日韩国产精品久久| 日韩免费观看高清完整版| 国产成人一级电影| 一区二区三区毛片| 日韩欧美国产精品| 成人午夜激情片| 亚洲成a人v欧美综合天堂下载| 欧美一卡二卡三卡四卡| 成人高清视频在线| 日日夜夜精品免费视频| 国产日韩欧美a| 欧美美女一区二区| 不卡一卡二卡三乱码免费网站| 亚洲国产精品久久艾草纯爱| 精品人伦一区二区色婷婷| 99国产精品久久久久| 蜜桃av一区二区在线观看| 亚洲色图制服丝袜| 26uuu精品一区二区| 色天天综合色天天久久| 91精品国产麻豆| 96av麻豆蜜桃一区二区| 日本不卡一区二区三区| 中文字幕一区三区| 日韩久久免费av| 精品视频123区在线观看| 成人一区在线观看| 久久电影国产免费久久电影| 亚洲夂夂婷婷色拍ww47| 国产精品理论在线观看| 久久综合九色综合97婷婷 | 欧美欧美欧美欧美首页| 成人蜜臀av电影| 久久成人久久爱| 日日摸夜夜添夜夜添亚洲女人| 中文字幕在线一区免费| 久久综合丝袜日本网| 欧美群妇大交群的观看方式| 色悠悠久久综合| 成人黄色av电影| 国产一区欧美日韩| 久久99精品国产.久久久久久| 亚洲国产成人av网| 一片黄亚洲嫩模| 亚洲天堂久久久久久久| 国产精品嫩草影院av蜜臀| 久久美女高清视频| 精品国产乱码久久久久久夜甘婷婷 | 色婷婷精品大视频在线蜜桃视频| 国产成人av在线影院| 美女网站色91| 麻豆一区二区三| 麻豆精品久久久| 久88久久88久久久| 乱中年女人伦av一区二区| 日本不卡123| 久久99精品国产| 国产伦精一区二区三区| 国产精品亚洲一区二区三区妖精| 久久99精品久久久久久国产越南 | 欧美成人a∨高清免费观看| 777精品伊人久久久久大香线蕉| 欧美巨大另类极品videosbest | 91福利区一区二区三区| 欧美色涩在线第一页| 欧美精品一级二级三级| 91精品国产色综合久久久蜜香臀| 777xxx欧美| 久久影院午夜片一区| 国产精品久久久久影院色老大| 国产精品久久久久久久久久免费看 | 国内精品写真在线观看| 激情小说欧美图片| 成人免费高清在线观看| 色妞www精品视频| 色婷婷激情一区二区三区| 欧美日韩免费观看一区三区| 91精品国产乱码久久蜜臀| 欧美精品一区二区不卡| 国产精品久久综合| 亚洲高清久久久| 久久精品国产网站| 国产成人8x视频一区二区| 91视频xxxx| 欧美精品色综合| 国产午夜精品福利| 中文字幕中文乱码欧美一区二区| 亚洲黄色尤物视频| 久久99精品国产麻豆不卡| 高清国产一区二区三区| 在线看不卡av| 久久综合九色欧美综合狠狠| 亚洲激情网站免费观看| 麻豆精品新av中文字幕| 色综合天天综合网天天狠天天| 在线成人av影院| 中文字幕在线观看不卡视频| 亚洲国产aⅴ成人精品无吗| 国产精品一区在线观看乱码| 欧美性一级生活| 国产亚洲一二三区| 亚洲va欧美va人人爽午夜| 粉嫩aⅴ一区二区三区四区五区| 欧美亚洲图片小说| 中文字幕av一区二区三区| 五月开心婷婷久久| 国产成人日日夜夜| 7777精品伊人久久久大香线蕉的 | 美国十次综合导航| 91老师国产黑色丝袜在线| 欧美一激情一区二区三区| 18欧美乱大交hd1984| 国产一区二区久久| 91精品久久久久久久99蜜桃| 亚洲欧美一区二区在线观看| 极品美女销魂一区二区三区| 欧美色偷偷大香| ㊣最新国产の精品bt伙计久久| 裸体歌舞表演一区二区| 欧美三级日韩三级| 中文字幕一区二区在线播放| 久久精品国产亚洲高清剧情介绍| 欧美在线短视频| 国产精品对白交换视频 | 欧美色图在线观看| 国产精品久久一级| 国产成人亚洲精品狼色在线| 日韩午夜电影在线观看| 亚洲大片精品永久免费| 91国模大尺度私拍在线视频| 国产精品三级电影| 成人精品小蝌蚪| 中文字幕免费不卡| 国产成人高清在线| 久久久久久久久久电影| 久久精品av麻豆的观看方式| 欧美一区二区精品久久911| 午夜国产精品一区| 欧美日韩精品专区| 亚洲国产欧美在线人成| 欧美亚洲高清一区二区三区不卡| 亚洲美女免费视频| 91论坛在线播放| 亚洲一区在线电影| 欧美日韩国产片| 日本午夜一区二区| 免费人成在线不卡|