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

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

?? categorytextannotation.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.]
 *
 * ---------------------------
 * 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();    
    }
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合亚洲欧洲| 欧美国产精品专区| 欧美激情一区在线观看| 午夜伦理一区二区| 成人黄色小视频在线观看| 3atv在线一区二区三区| 亚洲图片激情小说| 国产成人h网站| 欧美www视频| 毛片不卡一区二区| 欧美日韩一级大片网址| 亚洲精品国产精品乱码不99| 国产成人免费在线观看| 久久免费的精品国产v∧| 日韩精品电影在线| 在线播放91灌醉迷j高跟美女| 亚洲另类一区二区| 91麻豆文化传媒在线观看| 国产精品私人影院| 国产一区二区三区精品视频| 日韩欧美在线影院| 麻豆精品在线看| 日韩欧美美女一区二区三区| 日韩不卡一区二区| 欧美一卡二卡在线| 人人爽香蕉精品| 91精品国产综合久久精品app| 婷婷一区二区三区| 7799精品视频| 蜜臀国产一区二区三区在线播放| 日韩亚洲欧美成人一区| 男女男精品视频网| 亚洲精品在线免费观看视频| 韩国精品主播一区二区在线观看 | 国产成人精品免费看| 精品福利一区二区三区 | 免费成人在线网站| 欧美mv日韩mv| 国产精品羞羞答答xxdd| 中国色在线观看另类| aaa欧美日韩| 亚洲综合免费观看高清完整版 | 九九视频精品免费| 久久综合五月天婷婷伊人| 国内精品久久久久影院色| 国产午夜精品一区二区 | 亚洲成人免费视频| 91精品一区二区三区久久久久久 | 洋洋成人永久网站入口| 日本久久一区二区| 性做久久久久久免费观看| 日韩三级.com| 不卡一区二区在线| 视频精品一区二区| 久久日韩精品一区二区五区| 成人黄页毛片网站| 五月激情六月综合| 久久久久久久久久久久电影| eeuss鲁片一区二区三区| 亚洲在线免费播放| 久久久久久久电影| 欧美色综合网站| 国产一级精品在线| 一区二区日韩av| 久久久亚洲精华液精华液精华液| 99re这里都是精品| 美女免费视频一区二区| 日韩毛片一二三区| 2014亚洲片线观看视频免费| 欧美在线视频日韩| 高清av一区二区| 日韩电影在线看| 中文字幕在线观看一区二区| 欧美一区二区三区男人的天堂| 丁香婷婷综合激情五月色| 天天综合日日夜夜精品| 中文字幕一区二| 精品欧美黑人一区二区三区| 欧美影视一区二区三区| 粉嫩aⅴ一区二区三区四区| 日av在线不卡| 亚洲国产sm捆绑调教视频 | 久久久久免费观看| 欧美日韩不卡在线| 91麻豆高清视频| 成人亚洲精品久久久久软件| 日本91福利区| 亚洲成人免费在线观看| 亚洲免费在线播放| 国产精品久久久久久久午夜片| 欧美videos大乳护士334| 欧美性欧美巨大黑白大战| 粉嫩av一区二区三区粉嫩| 久久精品久久综合| 首页国产欧美久久| 亚洲国产欧美在线| 亚洲精品视频观看| **性色生活片久久毛片| 中文无字幕一区二区三区| 欧美tickling挠脚心丨vk| 制服.丝袜.亚洲.中文.综合| 欧美亚洲一区二区三区四区| av午夜一区麻豆| heyzo一本久久综合| 成人午夜私人影院| 成人性视频网站| thepron国产精品| 99精品欧美一区二区蜜桃免费| 成人午夜短视频| 国产成人午夜精品影院观看视频| 国产综合久久久久久久久久久久| 精品一二线国产| 激情久久五月天| 国产黑丝在线一区二区三区| 粉嫩高潮美女一区二区三区| 成人性生交大片免费看视频在线 | 成人午夜视频在线观看| 成人免费精品视频| 99国内精品久久| 日本福利一区二区| 欧美性videosxxxxx| 欧美另类z0zxhd电影| 欧美疯狂性受xxxxx喷水图片| 7799精品视频| 久久中文娱乐网| 欧美激情艳妇裸体舞| 亚洲女同ⅹxx女同tv| 亚洲一区av在线| 美女被吸乳得到大胸91| 国产精品夜夜嗨| 91免费在线播放| 欧美日韩成人综合在线一区二区| 日韩精品一区二区三区视频| 国产人成一区二区三区影院| 亚洲日韩欧美一区二区在线| 亚洲va韩国va欧美va| 国产一区二区按摩在线观看| 色呦呦网站一区| 7777精品伊人久久久大香线蕉的 | 欧美日韩的一区二区| 精品国产免费一区二区三区四区| 国产日韩欧美综合一区| 亚洲精品国产第一综合99久久 | 精品视频在线免费观看| 欧美videofree性高清杂交| 国产精品嫩草99a| 亚洲国产精品人人做人人爽| 韩日av一区二区| 欧亚一区二区三区| 久久蜜臀中文字幕| 亚洲va欧美va国产va天堂影院| 激情六月婷婷综合| 在线观看国产91| 久久精品在线免费观看| 亚洲午夜精品在线| 国产91丝袜在线播放0| 欧美日本视频在线| 中文字幕不卡在线观看| 日韩不卡手机在线v区| k8久久久一区二区三区| 日韩精品一区二区三区在线播放| 亚洲欧美欧美一区二区三区| 久久精品国产第一区二区三区| 99re视频精品| 国产性色一区二区| 日本欧美在线看| 欧美在线短视频| ●精品国产综合乱码久久久久| 激情小说亚洲一区| 在线播放国产精品二区一二区四区| 国产精品少妇自拍| 经典三级视频一区| 在线综合视频播放| 亚洲国产精品人人做人人爽| 99re8在线精品视频免费播放| 久久九九全国免费| 久久99精品国产.久久久久久| 欧美日韩在线播放一区| 亚洲女女做受ⅹxx高潮| av电影在线观看一区| 国产人妖乱国产精品人妖| 狠狠色综合日日| 日韩精品一区二区三区四区视频| 日韩高清在线不卡| 精品1区2区3区| 亚洲成人精品在线观看| 欧美亚洲国产一区二区三区va | 亚洲你懂的在线视频| 成人午夜激情影院| 国产精品视频一二三| 国产激情一区二区三区| 久久精品视频一区二区三区| 韩国精品主播一区二区在线观看| 日韩欧美一区中文| 六月丁香婷婷久久| 精品国产91久久久久久久妲己| 精品中文av资源站在线观看| 欧美mv日韩mv| 国产老妇另类xxxxx| 国产精品女同一区二区三区|