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

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

?? categorytextannotation.java

?? 制作圖表的好工具
?? JAVA
字號(hào):
/* ===========================================================
 * 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.]
 *
 * ---------------------------
 * CategoryTextAnnotation.java
 * ---------------------------
 * (C) Copyright 2003-2005, by Object Refinery Limited.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   -;
 *
 * $Id: CategoryTextAnnotation.java,v 1.6.2.1 2005/10/25 16:51:15 mungady Exp $
 *
 * Changes:
 * --------
 * 02-Apr-2003 : Version 1 (DG);
 * 02-Jul-2003 : Added new text alignment and rotation options (DG);
 * 04-Jul-2003 : Added a category anchor option (DG);
 * 19-Aug-2003 : Added equals() method and implemented Cloneable (DG);
 * 21-Jan-2004 : Update for renamed method in ValueAxis (DG);
 * 30-Sep-2004 : Moved drawRotatedString() from RefineryUtilities 
 *               --> TextUtilities (DG);
 *
 */

package org.jfree.chart.annotations;

import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.io.Serializable;

import org.jfree.chart.axis.CategoryAnchor;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.text.TextUtilities;
import org.jfree.ui.RectangleEdge;

/**
 * A text annotation that can be placed on a 
 * {@link org.jfree.chart.plot.CategoryPlot}.
 */
public class CategoryTextAnnotation extends TextAnnotation
                                    implements CategoryAnnotation, 
                                               Cloneable, Serializable {

    /** For serialization. */
    private static final long serialVersionUID = 3333360090781320147L;
    
    /** The category. */
    private Comparable category;

    /** The category anchor (START, MIDDLE, or END). */
    private CategoryAnchor categoryAnchor;
     
    /** The value. */
    private double value;

    /**
     * Creates a new annotation to be displayed at the given location.
     *
     * @param text  the text (<code>null</code> not permitted).
     * @param category  the category (<code>null</code> not permitted).
     * @param value  the value.
     */
    public CategoryTextAnnotation(String text, Comparable category, 
                                  double value) {
        super(text);
        if (category == null) {
            throw new IllegalArgumentException("Null 'category' argument.");   
        }
        this.category = category;
        this.value = value;
        this.categoryAnchor = CategoryAnchor.MIDDLE;
    }

    /**
     * Returns the category.
     * 
     * @return The category (never <code>null</code>).
     */
    public Comparable getCategory() {
        return this.category;
    }
    
    /**
     * Sets the category that the annotation attaches to.
     * 
     * @param category  the category (<code>null</code> not permitted).
     */
    public void setCategory(Comparable category) {
        if (category == null) {
            throw new IllegalArgumentException("Null 'category' argument.");   
        }
        this.category = category;
    }
    
    /**
     * Returns the category anchor point.
     * 
     * @return The category anchor point.
     */
    public CategoryAnchor getCategoryAnchor() {
        return this.categoryAnchor;
    }
    
    /**
     * Sets the category anchor point.
     * 
     * @param anchor  the anchor point (<code>null</code> not permitted).
     */
    public void setCategoryAnchor(CategoryAnchor anchor) {
        if (anchor == null) {
            throw new IllegalArgumentException("Null 'anchor' argument.");   
        }
        this.categoryAnchor = anchor;    
    }
    
    /**
     * Returns the value that the annotation attaches to.
     * 
     * @return The value.
     */
    public double getValue() {
        return this.value;
    }
    
    /**
     * Sets the value.
     * 
     * @param value  the value.
     */
    public void setValue(double value) {
        this.value = value;    
    }
    
    /**
     * Draws the annotation.
     *
     * @param g2  the graphics device.
     * @param plot  the plot.
     * @param dataArea  the data area.
     * @param domainAxis  the domain axis.
     * @param rangeAxis  the range axis.
     */
    public void draw(Graphics2D g2, CategoryPlot plot, Rectangle2D dataArea,
                     CategoryAxis domainAxis, ValueAxis rangeAxis) {

        CategoryDataset dataset = plot.getDataset();
        int catIndex = dataset.getColumnIndex(this.category);
        int catCount = dataset.getColumnCount();

        float anchorX = 0.0f;
        float anchorY = 0.0f;
        PlotOrientation orientation = plot.getOrientation();
        RectangleEdge domainEdge = Plot.resolveDomainAxisLocation(
            plot.getDomainAxisLocation(), orientation
        );
        RectangleEdge rangeEdge = Plot.resolveRangeAxisLocation(
            plot.getRangeAxisLocation(), orientation
        );
        
        if (orientation == PlotOrientation.HORIZONTAL) {
            anchorY = (float) domainAxis.getCategoryJava2DCoordinate(
                this.categoryAnchor, catIndex, catCount, dataArea, domainEdge
            );
            anchorX = (float) rangeAxis.valueToJava2D(
                this.value, dataArea, rangeEdge
            );
        }
        else if (orientation == PlotOrientation.VERTICAL) {
            anchorX = (float) domainAxis.getCategoryJava2DCoordinate(
                this.categoryAnchor, catIndex, catCount, dataArea, domainEdge
            );
            anchorY = (float) rangeAxis.valueToJava2D(
                this.value, dataArea, rangeEdge
            );
        }
        g2.setFont(getFont());
        g2.setPaint(getPaint());
        TextUtilities.drawRotatedString(
            getText(), 
            g2,
            anchorX, 
            anchorY,
            getTextAnchor(),
            getRotationAngle(),
            getRotationAnchor()
        );

    }

    /**
     * Tests this object for equality with another.
     * 
     * @param obj  the object (<code>null</code> permitted).
     * 
     * @return <code>true</code> or <code>false</code>.
     */
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof CategoryTextAnnotation)) {
            return false;
        }
        CategoryTextAnnotation that = (CategoryTextAnnotation) obj;
        if (!super.equals(obj)) {
            return false;
        }
        if (!this.category.equals(that.getCategory())) {
            return false;
        }
        if (!this.categoryAnchor.equals(that.getCategoryAnchor())) {
            return false;
        }
        if (this.value != that.getValue()) {
            return false;    
        }
        return true;
    }
    
    /**
     * Returns a clone of the annotation.
     * 
     * @return A clone.
     * 
     * @throws CloneNotSupportedException  this class will not throw this 
     *         exception, but subclasses (if any) might.
     */
    public Object clone() throws CloneNotSupportedException {
        return super.clone();    
    }
    
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区精华液| 国产成人一级电影| 91福利在线导航| 亚洲特级片在线| 色美美综合视频| 亚洲最色的网站| 91精品国产综合久久福利| 免费在线一区观看| 久久久国产精品午夜一区ai换脸| 国产黄色91视频| 亚洲欧美日韩久久| 欧美日韩国产片| 黄色小说综合网站| 中文字幕一区二区三区色视频| 91麻豆蜜桃一区二区三区| 亚洲一区在线视频观看| 日韩欧美中文一区| 国产精品一二三四| 艳妇臀荡乳欲伦亚洲一区| 欧美成人女星排行榜| 99精品欧美一区二区三区小说| 一区二区三区四区av| 日韩精品一区二区三区在线播放| 国产一区二区三区四区五区美女 | 中文字幕一区二区三| 色噜噜狠狠成人中文综合| 日韩精品一区第一页| 国产性做久久久久久| 在线欧美日韩精品| 九九国产精品视频| 亚洲麻豆国产自偷在线| 日韩一卡二卡三卡国产欧美| 成人av免费在线观看| 美腿丝袜亚洲一区| 亚洲欧美日韩国产综合在线| 精品国产亚洲在线| 欧美丝袜自拍制服另类| 国产**成人网毛片九色 | aa级大片欧美| 狠狠狠色丁香婷婷综合激情| 一区二区三区四区乱视频| xnxx国产精品| 欧美精三区欧美精三区| 成人激情开心网| 激情久久久久久久久久久久久久久久| 伊人婷婷欧美激情| 亚洲国产成人自拍| 日韩一区二区三区电影 | 日韩欧美高清在线| 日本韩国一区二区| 不卡一二三区首页| 国产精品性做久久久久久| 日韩高清一级片| 亚洲中国最大av网站| 一区二区中文视频| 国产亚洲欧美日韩日本| 日韩欧美国产一区在线观看| 欧美性受xxxx黑人xyx性爽| 成人精品鲁一区一区二区| 精品一区二区三区视频在线观看 | 亚洲成a人片综合在线| 亚洲色图一区二区| 国产精品婷婷午夜在线观看| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩国产在线播放网站| 91黄色免费网站| 91福利区一区二区三区| 91在线视频在线| 91欧美激情一区二区三区成人| 处破女av一区二区| 国产精品中文字幕日韩精品| 国产一区在线视频| 韩国三级电影一区二区| 免费成人在线观看视频| 免费的国产精品| 青娱乐精品视频| 免费成人性网站| 久久国产精品露脸对白| 经典一区二区三区| 国产在线精品一区二区三区不卡| 久久国产精品99久久人人澡| 国产美女av一区二区三区| 国产精品伊人色| 岛国av在线一区| 99国产精品国产精品久久| 色偷偷88欧美精品久久久| 欧美在线视频全部完| 欧美日韩精品专区| 欧美一区二区三区免费在线看| 欧美一区二区三区视频免费| 日韩一区二区麻豆国产| 26uuu国产在线精品一区二区| 精品国产乱码久久久久久图片 | 亚洲国产精品v| 亚洲欧美日韩国产一区二区三区| 亚洲精品中文在线| 午夜天堂影视香蕉久久| 蜜桃视频一区二区| 国产**成人网毛片九色| 99久久久久久| 制服.丝袜.亚洲.另类.中文| 欧美成人性战久久| 日韩一区有码在线| 亚洲v中文字幕| 日本不卡中文字幕| 国产精品一区二区不卡| 91视频免费看| 欧美一区二区三区四区五区 | 亚洲夂夂婷婷色拍ww47| 免费欧美日韩国产三级电影| 国产精品18久久久久久vr| 91浏览器打开| 亚洲精品一区二区在线观看| 最新国产精品久久精品| 午夜精品久久久久影视| 国产福利精品一区二区| 欧美在线观看一区二区| 精品久久人人做人人爱| 亚洲日本va在线观看| 免费不卡在线观看| 91美女视频网站| 精品美女一区二区三区| 一区二区三区欧美激情| 国产综合色在线| 欧美日韩免费高清一区色橹橹 | 国产精品热久久久久夜色精品三区 | 99久久99精品久久久久久| 欧美肥大bbwbbw高潮| 国产精品网站在线| 日本中文字幕一区| 97超碰欧美中文字幕| 久久蜜桃av一区二区天堂| 亚洲国产成人高清精品| 国产成人久久精品77777最新版本| 欧美日韩一区成人| 最近日韩中文字幕| 国产精品18久久久久久vr| 777午夜精品免费视频| 亚洲女与黑人做爰| 粉嫩av亚洲一区二区图片| 日韩一区二区三区精品视频| 亚洲一区二区三区四区的| 波多野结衣视频一区| 久久精品人人做人人爽97| 琪琪一区二区三区| 欧美亚一区二区| 一区二区三区色| 色婷婷精品大视频在线蜜桃视频| 国产精品天干天干在观线 | 国产成人综合网站| 日韩亚洲欧美综合| 日韩不卡在线观看日韩不卡视频| 欧美在线观看一区二区| 亚洲激情自拍视频| 91亚洲国产成人精品一区二区三| 欧美激情中文不卡| 国产成人精品亚洲日本在线桃色| 日韩精品一区二区三区在线观看| 蜜臀精品久久久久久蜜臀 | 国产三级精品三级在线专区| 久久精品99久久久| 精品国产一区久久| 韩国女主播一区| 久久精品亚洲国产奇米99| 国产一区二区在线视频| 亚洲精品在线免费播放| 国产美女主播视频一区| 国产日韩欧美在线一区| 成人高清视频免费观看| 国产精品国产三级国产aⅴ入口| 丁香桃色午夜亚洲一区二区三区| 国产色婷婷亚洲99精品小说| 国内外精品视频| 国产欧美日韩三级| 成人精品视频.| 一区二区三区电影在线播| 欧美亚一区二区| 国产精品18久久久久| 中文字幕av一区二区三区| av一区二区三区四区| 亚洲免费在线播放| 欧美三级乱人伦电影| 蜜臀91精品一区二区三区 | 一区二区三区在线播| 欧美在线观看视频一区二区 | 日本视频一区二区三区| 精品美女一区二区三区| 不卡一区中文字幕| 亚洲国产日韩一区二区| 欧美一级片在线观看| 国产成人免费视频网站高清观看视频 | 蜜桃久久久久久| xnxx国产精品| 一本大道久久a久久精品综合| 亚洲va欧美va国产va天堂影院| 日韩一区二区精品葵司在线| 岛国精品一区二区| 亚洲午夜久久久久久久久电影院 | 欧美国产日韩精品免费观看| av在线不卡免费看|