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

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

?? thermometerplot.java

?? 制作圖表的好工具
?? JAVA
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
                this.subrange = NORMAL;
            }
            else if (inSubrange(WARNING, value)) {
               this.subrange = WARNING;
            }
            else if (inSubrange(CRITICAL, value)) {
                this.subrange = CRITICAL;
            }
            else {
                this.subrange = -1;
            }
            setAxisRange();
        }
        super.datasetChanged(event);
    }

    /**
     * Returns the minimum value in either the domain or the range, whichever
     * is displayed against the vertical axis for the particular type of plot
     * implementing this interface.
     *
     * @return The minimum value in either the domain or the range.
     */
    public Number getMinimumVerticalDataValue() {
        return new Double(this.lowerBound);
    }

    /**
     * Returns the maximum value in either the domain or the range, whichever
     * is displayed against the vertical axis for the particular type of plot
     * implementing this interface.
     *
     * @return The maximum value in either the domain or the range
     */
    public Number getMaximumVerticalDataValue() {
        return new Double(this.upperBound);
    }

    /**
     * Returns the data range.
     *
     * @param axis  the axis.
     *
     * @return The range of data displayed.
     */
    public Range getDataRange(ValueAxis axis) {
       return new Range(this.lowerBound, this.upperBound);
    }

    /**
     * Sets the axis range to the current values in the rangeInfo array.
     */
    protected void setAxisRange() {
        if ((this.subrange >= 0) && (this.followDataInSubranges)) {
            this.rangeAxis.setRange(
                new Range(this.subrangeInfo[this.subrange][DISPLAY_LOW],
                this.subrangeInfo[this.subrange][DISPLAY_HIGH])
            );
        }
        else {
            this.rangeAxis.setRange(this.lowerBound, this.upperBound);
        }
    }

    /**
     * Returns the legend items for the plot.
     *
     * @return <code>null</code>.
     */
    public LegendItemCollection getLegendItems() {
        return null;
    }

    /**
     * Returns the orientation of the plot.
     * 
     * @return The orientation (always {@link PlotOrientation#VERTICAL}).
     */
    public PlotOrientation getOrientation() {
        return PlotOrientation.VERTICAL;    
    }

    /**
     * Determine whether a number is valid and finite.
     *
     * @param d  the number to be tested.
     *
     * @return <code>true</code> if the number is valid and finite, and 
     *         <code>false</code> otherwise.
     */
    protected static boolean isValidNumber(double d) {
        return (!(Double.isNaN(d) || Double.isInfinite(d)));
    }

    /**
     * Returns true if the value is in the specified range, and false otherwise.
     *
     * @param subrange  the subrange.
     * @param value  the value to check.
     *
     * @return A boolean.
     */
    private boolean inSubrange(int subrange, double value) {
        return (value > this.subrangeInfo[subrange][RANGE_LOW]
            && value <= this.subrangeInfo[subrange][RANGE_HIGH]);
    }

    /**
     * Returns the mercury paint corresponding to the current data value.
     *
     * @return The paint.
     */
    private Paint getCurrentPaint() {

        Paint result = this.mercuryPaint;
        if (this.useSubrangePaint) {
            double value = this.dataset.getValue().doubleValue();
            if (inSubrange(NORMAL, value)) {
                result = this.subrangePaint[NORMAL];
            }
            else if (inSubrange(WARNING, value)) {
                result = this.subrangePaint[WARNING];
            }
            else if (inSubrange(CRITICAL, value)) {
                result = this.subrangePaint[CRITICAL];
            }
        }
        return result;
    }

    /**
     * Tests this plot for equality with another object.  The plot's dataset
     * is not considered in the test.
     *
     * @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 ThermometerPlot)) {
            return false;
        }
        ThermometerPlot that = (ThermometerPlot) obj;
        if (!super.equals(obj)) {
            return false;
        }
        if (!ObjectUtilities.equal(this.rangeAxis, that.rangeAxis)) {
            return false;
        }
        if (this.axisLocation != that.axisLocation) {
            return false;   
        }
        if (this.lowerBound != that.lowerBound) {
            return false;
        }
        if (this.upperBound != that.upperBound) {
            return false;
        }
        if (!ObjectUtilities.equal(this.padding, that.padding)) {
            return false;
        }
        if (!ObjectUtilities.equal(
            this.thermometerStroke, that.thermometerStroke
        )) {
            return false;
        }
        if (!PaintUtilities.equal(
            this.thermometerPaint, that.thermometerPaint
        )) {
            return false;
        }
        if (this.units != that.units) {
            return false;
        }
        if (this.valueLocation != that.valueLocation) {
            return false;
        }
        if (!ObjectUtilities.equal(this.valueFont, that.valueFont)) {
            return false;
        }
        if (!PaintUtilities.equal(this.valuePaint, that.valuePaint)) {
            return false;
        }
        if (!ObjectUtilities.equal(this.valueFormat, that.valueFormat)) {
            return false;
        }
        if (!PaintUtilities.equal(this.mercuryPaint, that.mercuryPaint)) {
            return false;
        }
        if (this.showValueLines != that.showValueLines) {
            return false;
        }
        if (this.subrange != that.subrange) {
            return false;
        }
        if (this.followDataInSubranges != that.followDataInSubranges) {
            return false;
        }
        if (!equal(this.subrangeInfo, that.subrangeInfo)) {
            return false;   
        }
        if (this.useSubrangePaint != that.useSubrangePaint) {
            return false;
        }
        for (int i = 0; i < this.subrangePaint.length; i++) {
            if (!PaintUtilities.equal(this.subrangePaint[i], 
                    that.subrangePaint[i])) {
                return false;   
            }
        }
        return true;
    }

    /**
     * Tests two double[][] arrays for equality.
     * 
     * @param array1  the first array (<code>null</code> permitted).
     * @param array2  the second arrray (<code>null</code> permitted).
     * 
     * @return A boolean.
     */
    private static boolean equal(double[][] array1, double[][] array2) {
        if (array1 == null) {
            return (array2 == null);
        }
        if (array2 == null) {
            return false;
        }
        if (array1.length != array2.length) {
            return false;
        }
        for (int i = 0; i < array1.length; i++) {
            if (!Arrays.equals(array1[i], array2[i])) {
                return false;
            }
        }
        return true;
    }

    /**
     * Returns a clone of the plot.
     *
     * @return A clone.
     *
     * @throws CloneNotSupportedException  if the plot cannot be cloned.
     */
    public Object clone() throws CloneNotSupportedException {

        ThermometerPlot clone = (ThermometerPlot) super.clone();

        if (clone.dataset != null) {
            clone.dataset.addChangeListener(clone);
        }
        clone.rangeAxis = (ValueAxis) ObjectUtilities.clone(this.rangeAxis);
        if (clone.rangeAxis != null) {
            clone.rangeAxis.setPlot(clone);
            clone.rangeAxis.addChangeListener(clone);
        }
        clone.valueFormat = (NumberFormat) this.valueFormat.clone();
        clone.subrangePaint = (Paint[]) this.subrangePaint.clone();

        return clone;

    }

    /**
     * Provides serialization support.
     *
     * @param stream  the output stream.
     *
     * @throws IOException  if there is an I/O error.
     */
    private void writeObject(ObjectOutputStream stream) throws IOException { 
        stream.defaultWriteObject();
        SerialUtilities.writeStroke(this.thermometerStroke, stream);
        SerialUtilities.writePaint(this.thermometerPaint, stream);
        SerialUtilities.writePaint(this.valuePaint, stream);
        SerialUtilities.writePaint(this.mercuryPaint, stream);
        SerialUtilities.writeStroke(this.subrangeIndicatorStroke, stream);
        SerialUtilities.writeStroke(this.rangeIndicatorStroke, stream);
    }

    /**
     * Provides serialization support.
     *
     * @param stream  the input stream.
     *
     * @throws IOException  if there is an I/O error.
     * @throws ClassNotFoundException  if there is a classpath problem.
     */
    private void readObject(ObjectInputStream stream) throws IOException,
            ClassNotFoundException {
        stream.defaultReadObject();
        this.thermometerStroke = SerialUtilities.readStroke(stream);
        this.thermometerPaint = SerialUtilities.readPaint(stream);
        this.valuePaint = SerialUtilities.readPaint(stream);
        this.mercuryPaint = SerialUtilities.readPaint(stream);
        this.subrangeIndicatorStroke = SerialUtilities.readStroke(stream);
        this.rangeIndicatorStroke = SerialUtilities.readStroke(stream);

        if (this.rangeAxis != null) {
            this.rangeAxis.addChangeListener(this);
        }
    }

    /**
     * Multiplies the range on the domain axis/axes by the specified factor.
     *
     * @param factor  the zoom factor.
     * @param state  the plot state.
     * @param source  the source point.
     */
    public void zoomDomainAxes(double factor, PlotRenderingInfo state, 
                               Point2D source) {
        // TODO: to be implemented.
    }

    /**
     * Multiplies the range on the range axis/axes by the specified factor.
     *
     * @param factor  the zoom factor.
     * @param state  the plot state.
     * @param source  the source point.
     */
    public void zoomRangeAxes(double factor, PlotRenderingInfo state, 
                              Point2D source) {
        this.rangeAxis.resizeRange(factor);
    }

    /**
     * This method does nothing.
     *
     * @param lowerPercent  the lower percent.
     * @param upperPercent  the upper percent.
     * @param state  the plot state.
     * @param source  the source point.
     */
    public void zoomDomainAxes(double lowerPercent, double upperPercent, 
                               PlotRenderingInfo state, Point2D source) {
        // no domain axis to zoom
    }

    /**
     * Zooms the range axes.
     *
     * @param lowerPercent  the lower percent.
     * @param upperPercent  the upper percent.
     * @param state  the plot state.
     * @param source  the source point.
     */
    public void zoomRangeAxes(double lowerPercent, double upperPercent, 
                              PlotRenderingInfo state, Point2D source) {
        this.rangeAxis.zoomRange(lowerPercent, upperPercent);
    }
  
    /**
     * Returns <code>false</code>.
     * 
     * @return A boolean.
     */
    public boolean isDomainZoomable() {
        return false;
    }
    
    /**
     * Returns <code>true</code>.
     * 
     * @return A boolean.
     */
    public boolean isRangeZoomable() {
        return true;
    }

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本在线视频| 成人综合在线视频| 国产精品一区二区在线看| 成人性生交大合| 欧洲精品中文字幕| 精品奇米国产一区二区三区| 国产欧美一区二区在线| 夜夜嗨av一区二区三区 | 欧美三级中文字| 欧美激情中文字幕| 亚洲chinese男男1069| 国产麻豆精品在线观看| 91黄色激情网站| 日韩欧美黄色影院| 亚洲精品乱码久久久久| 加勒比av一区二区| 欧美在线高清视频| 国产日韩欧美综合一区| 亚洲国产日产av| 国产一区二区0| 欧美老年两性高潮| 亚洲欧洲精品天堂一级| 久久爱www久久做| 色噜噜狠狠成人中文综合| 久久青草国产手机看片福利盒子| 亚洲精品一二三| 国产91精品在线观看| 8v天堂国产在线一区二区| 一区在线中文字幕| 国产一区二区三区免费| 欧美另类一区二区三区| 亚洲欧美色综合| 国产99精品在线观看| 欧美一区午夜精品| 一区二区三区欧美视频| 国产白丝精品91爽爽久久| 5月丁香婷婷综合| 亚洲精品美国一| 成人免费精品视频| 精品久久久久久久久久久久久久久久久| 一区二区三区不卡视频在线观看 | 久久亚洲综合色一区二区三区| 亚洲免费观看视频| 丁香六月久久综合狠狠色| 日韩一区二区在线免费观看| 一区二区三区中文字幕在线观看| 国产精品一品二品| 日韩精品一区二区在线观看| 亚洲一区成人在线| 一本久道中文字幕精品亚洲嫩| 久久精品一区四区| 久草精品在线观看| 日韩三区在线观看| 日韩电影在线看| 欧美午夜视频网站| 亚洲综合在线免费观看| 91捆绑美女网站| 最新久久zyz资源站| 成人av先锋影音| 国产精品免费视频观看| 国产91精品精华液一区二区三区| 久久久久久久久久久久久女国产乱| 亚洲福利电影网| 欧美色综合天天久久综合精品| 亚洲美女在线一区| 色婷婷av一区二区| 怡红院av一区二区三区| 色哟哟亚洲精品| 亚洲在线成人精品| 欧美三级一区二区| 午夜av区久久| 欧美精品九九99久久| 日韩高清不卡一区| 欧美一级久久久久久久大片| 日日夜夜免费精品| 在线播放一区二区三区| 日本欧美大码aⅴ在线播放| 欧美另类变人与禽xxxxx| 天天影视涩香欲综合网| 欧美一区二视频| 激情综合网av| 久久精品人人做人人爽人人| 成人精品视频一区| 亚洲人成精品久久久久| 欧美三级电影网站| 五月天欧美精品| 日韩欧美激情在线| 国产精品99久久久久久似苏梦涵| 欧美激情在线观看视频免费| av电影在线观看不卡| 亚洲男人的天堂av| 91精品国产色综合久久不卡蜜臀 | 色av成人天堂桃色av| 亚洲主播在线播放| 日韩视频国产视频| 国产传媒一区在线| 一区二区三区四区视频精品免费 | 日本免费新一区视频| 精品久久久久久久久久久院品网 | 亚洲欧美日本韩国| 欧美在线视频不卡| 免费的国产精品| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美亚洲图片小说| 九色综合狠狠综合久久| 中文字幕国产一区| 欧美性色aⅴ视频一区日韩精品| 日韩av一区二区三区| 26uuu另类欧美亚洲曰本| 99这里都是精品| 亚洲电影一级片| 国产亚洲短视频| 91久久线看在观草草青青| 视频一区在线播放| 日本一区二区三区久久久久久久久不 | 精品国产青草久久久久福利| 国产精品亚洲午夜一区二区三区| 国产人久久人人人人爽| 色欧美日韩亚洲| 九色porny丨国产精品| 国产精品美女久久久久av爽李琼| 欧美日本视频在线| 国产精品白丝jk黑袜喷水| 夜夜夜精品看看| 久久网站热最新地址| 色美美综合视频| 蜜桃av一区二区三区电影| 欧美激情资源网| 欧美日韩高清一区二区| 国产露脸91国语对白| 亚洲国产一区二区a毛片| 欧美国产丝袜视频| 91精品欧美一区二区三区综合在| 成人av影视在线观看| 蜜桃久久久久久| 亚洲乱码国产乱码精品精的特点| 精品欧美一区二区在线观看| 91成人看片片| 成人午夜av电影| 久久精品72免费观看| 亚洲综合精品久久| 国产精品免费丝袜| 久久综合av免费| 欧美老女人在线| 91在线视频在线| 国产成人免费视频网站高清观看视频| 日日夜夜精品免费视频| 亚洲男人天堂av网| 国产精品女人毛片| 久久久久国产精品麻豆| 91精品国产综合久久福利| 91片在线免费观看| 成人丝袜18视频在线观看| 国内成+人亚洲+欧美+综合在线| 丝袜亚洲精品中文字幕一区| 亚洲色图一区二区三区| 国产无人区一区二区三区| 精品国产一区二区三区av性色| 欧美理论片在线| 欧美日韩一卡二卡| 91久久奴性调教| 91在线观看一区二区| 成人天堂资源www在线| 国产九九视频一区二区三区| 青青草国产成人av片免费| 亚洲一二三区在线观看| 一区二区三区在线免费播放| 中文字幕一区视频| 国产亲近乱来精品视频| 国产色91在线| 国产三级精品在线| 国产色综合久久| 国产欧美日韩另类视频免费观看| 久久美女高清视频| 欧美成人官网二区| 欧美大片一区二区三区| 91精品国产91久久久久久最新毛片| 欧美日韩国产三级| 欧美日韩免费在线视频| 欧美日韩久久一区| 欧美猛男男办公室激情| 欧美精品日韩综合在线| 欧美一区二区啪啪| 日韩一区二区精品葵司在线| 日韩免费视频一区| 精品盗摄一区二区三区| 久久日韩精品一区二区五区| 久久综合丝袜日本网| 久久久久久日产精品| 国产色综合久久| 国产精品传媒入口麻豆| 亚洲欧洲中文日韩久久av乱码| 尤物在线观看一区| 午夜精品久久久久久久蜜桃app| 亚洲成人精品一区| 青青青伊人色综合久久| 国产自产2019最新不卡| 国产99久久久久久免费看农村| 白白色亚洲国产精品| 91在线精品一区二区三区|