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

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

?? categoryplot.java

?? Web圖形化的Java庫
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:

    /**
     * Sets the stroke used to draw grid-lines against the domain axis.  A {@link PlotChangeEvent}
     * is sent to all registered listeners.
     *
     * @param stroke  the stroke.
     */
    public void setDomainGridlineStroke(Stroke stroke) {
        this.domainGridlineStroke = stroke;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the paint used to draw grid-lines against the domain axis.
     *
     * @return the paint.
     */
    public Paint getDomainGridlinePaint() {
        return this.domainGridlinePaint;
    }

    /**
     * Sets the paint used to draw the grid-lines (if any) against the domain axis.
     * A {@link PlotChangeEvent} is sent to all registered listeners.
     *
     * @param paint  the paint.
     */
    public void setDomainGridlinePaint(Paint paint) {
        this.domainGridlinePaint = paint;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the flag that controls whether the range grid-lines are visible.
     *
     * @return the flag.
     */
    public boolean isRangeGridlinesVisible() {
        return this.rangeGridlinesVisible;
    }

    /**
     * Sets the flag that controls whether or not grid-lines are drawn against the range axis.
     * If the flag changes value, a {@link PlotChangeEvent} is sent to all registered listeners.
     *
     * @param visible  the new value of the flag.
     */
    public void setRangeGridlinesVisible(boolean visible) {
        if (this.rangeGridlinesVisible != visible) {
            this.rangeGridlinesVisible = visible;
            notifyListeners(new PlotChangeEvent(this));
        }
    }

    /**
     * Returns the stroke used to draw the grid-lines against the range axis.
     *
     * @return the stroke.
     */
    public Stroke getRangeGridlineStroke() {
        return this.rangeGridlineStroke;
    }

    /**
     * Sets the stroke used to draw the grid-lines against the range axis.
     * A {@link PlotChangeEvent} is sent to all registered listeners.
     *
     * @param stroke  the stroke.
     */
    public void setRangeGridlineStroke(Stroke stroke) {
        this.rangeGridlineStroke = stroke;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the paint used to draw the grid-lines against the range axis.
     *
     * @return the paint.
     */
    public Paint getRangeGridlinePaint() {
        return this.rangeGridlinePaint;
    }

    /**
     * Sets the paint used to draw the grid lines against the range axis.
     * A {@link PlotChangeEvent} is sent to all registered listeners.
     *
     * @param paint  the paint.
     */
    public void setRangeGridlinePaint(Paint paint) {
        this.rangeGridlinePaint = paint;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the legend items for the plot.  By default, this method creates a legend item for
     * each series in the primary and secondary datasets.  You can change this behaviour by
     * overriding this method.
     *
     * @return the legend items.
     */
    public LegendItemCollection getLegendItems() {

        LegendItemCollection result = new LegendItemCollection();

        CategoryDataset data = getDataset();
        if (data != null) {
            int seriesCount = data.getRowCount();
            for (int i = 0; i < seriesCount; i++) {
                CategoryItemRenderer r = getRenderer();
                if (r != null) {
                    LegendItem item = r.getLegendItem(0, i);
                    result.add(item);
                }
            }
        }

        // get the legend items for the secondary datasets...
        int count = this.secondaryDatasets.size();
        for (int datasetIndex = 0; datasetIndex < count; datasetIndex++) {

            CategoryDataset dataset2 = getSecondaryDataset(datasetIndex);
            if (dataset2 != null) {
                CategoryItemRenderer renderer2 = getSecondaryRenderer(datasetIndex);
                if (renderer2 != null) {
                    int seriesCount = dataset2.getRowCount();
                    for (int i = 0; i < seriesCount; i++) {
                        LegendItem item = renderer2.getLegendItem(datasetIndex + 1, i);
                        result.add(item);
                    }
                }
            }
        }

        return result;

    }

    /**
     * Handles a 'click' on the plot by updating the anchor value.
     *
     * @param x  x-coordinate of the click.
     * @param y  y-coordinate of the click.
     * @param info  an optional info collection object to return data back to the caller.
     *
     */
    public void handleClick(int x, int y, ChartRenderingInfo info) {

        // set the anchor value for the range axis...
        float java2D = 0.0f;
        if (this.orientation == PlotOrientation.HORIZONTAL) {
            java2D = (float) x;
        }
        else if (this.orientation == PlotOrientation.VERTICAL) {
            java2D = (float) y;

        }
        RectangleEdge edge = Plot.resolveRangeAxisLocation(getRangeAxisLocation(), 
                                                           this.orientation);
        double value = this.rangeAxis.translateJava2DtoValue(java2D, info.getDataArea(), edge);
        setAnchorValue(value);
        setRangeCrosshairValue(value);

    }

    /**
     * Zooms (in or out) on the plot's value axis.
     * <p>
     * If the value 0.0 is passed in as the zoom percent, the auto-range
     * calculation for the axis is restored (which sets the range to include
     * the minimum and maximum data values, thus displaying all the data).
     *
     * @param percent  the zoom amount.
     */
    public void zoom(double percent) {

        if (percent > 0.0) {
            double range = this.rangeAxis.getRange().getLength();
            double scaledRange = range * percent;
            rangeAxis.setRange(this.anchorValue - scaledRange / 2.0,
                               this.anchorValue + scaledRange / 2.0);
        }
        else {
            rangeAxis.setAutoRange(true);
        }

    }

    /**
     * Receives notification of a change to the plot's dataset.
     * <P>
     * The range axis bounds will be recalculated if necessary.
     *
     * @param event  information about the event (not used here).
     */
    public void datasetChanged(DatasetChangeEvent event) {

        if (this.rangeAxis != null) {
            this.rangeAxis.configure();
        }
        int count = this.secondaryRangeAxes.size();
        for (int axisIndex = 0; axisIndex < count; axisIndex++) {
            ValueAxis secondaryRangeAxis = getSecondaryRangeAxis(axisIndex);
            if (secondaryRangeAxis != null) {
                secondaryRangeAxis.configure();
            }
        }
        if (getParent() != null) {
            getParent().datasetChanged(event);
        }
        else {
            PlotChangeEvent e = new PlotChangeEvent(this);
            notifyListeners(e);
        }

    }

    /**
     * Adds a marker for display against the range axis.
     * <P>
     * Typically a marker will be drawn by the renderer as a line perpendicular
     * to the range axis, however this is entirely up to the renderer.
     *
     * @param marker the marker.
     */
    public void addRangeMarker(Marker marker) {

        if (this.rangeMarkers == null) {
            this.rangeMarkers = new java.util.ArrayList();
        }
        this.rangeMarkers.add(marker);
        notifyListeners(new PlotChangeEvent(this));

    }

    /**
     * Clears all the range markers for the plot.
     */
    public void clearRangeMarkers() {
        if (this.rangeMarkers != null) {
            this.rangeMarkers.clear();
            notifyListeners(new PlotChangeEvent(this));
        }
    }

    /**
     * Returns the list of range markers (read only).
     *
     * @return The list of range markers.
     */
    public List getRangeMarkers() {
        return Collections.unmodifiableList(this.rangeMarkers);
    }

    /**
     * Adds a marker for display against the secondary range axis.
     * <P>
     * Typically a marker will be drawn by the renderer as a line perpendicular
     * to the range axis, however this is entirely up to the renderer.
     *
     * @param marker the marker.
     */
    public void addSecondaryRangeMarker(Marker marker) {

        if (this.secondaryRangeMarkers == null) {
            this.secondaryRangeMarkers = new java.util.ArrayList();
        }
        this.secondaryRangeMarkers.add(marker);
        notifyListeners(new PlotChangeEvent(this));

    }

    /**
     * Clears all the secondary range markers for the plot.
     */
    public void clearSecondaryRangeMarkers() {
        if (this.secondaryRangeMarkers != null) {
            this.secondaryRangeMarkers.clear();
            notifyListeners(new PlotChangeEvent(this));
        }
    }

    /**
     * Returns the list of secondary range markers (read only).
     *
     * @return The list of secondary range markers.
     */
    public List getSecondaryRangeMarkers() {
        if (this.secondaryRangeMarkers != null) {
            return Collections.unmodifiableList(this.secondaryRangeMarkers);
        }
        else {
            return null;
        }
    }

    /**
     * Returns a flag indicating whether or not the range crosshair is visible.
     *
     * @return the flag.
     */
    public boolean isRangeCrosshairVisible() {
        return this.rangeCrosshairVisible;
    }

    /**
     * Sets the flag indicating whether or not the range crosshair is visible.
     *
     * @param flag  the new value of the flag.
     */
    public void setRangeCrosshairVisible(boolean flag) {

        if (this.rangeCrosshairVisible != flag) {
            this.rangeCrosshairVisible = flag;
            notifyListeners(new PlotChangeEvent(this));
        }

    }

    /**
     * Returns a flag indicating whether or not the crosshair should "lock-on"
     * to actual data values.
     *
     * @return the flag.
     */
    public boolean isRangeCrosshairLockedOnData() {
        return this.rangeCrosshairLockedOnData;
    }

    /**
     * Sets the flag indicating whether or not the range crosshair should "lock-on"
     * to actual data values.
     *
     * @param flag  the flag.
     */
    public void setRangeCrosshairLockedOnData(boolean flag) {

        if (this.rangeCrosshairLockedOnData != flag) {
            this.rangeCrosshairLockedOnData = flag;
            notifyListeners(new PlotChangeEvent(this));
        }

    }

    /**
     * Returns the range crosshair value.
     *
     * @return The value.
     */
    public double getRangeCrosshairValue() {
        return this.rangeCrosshairValue;
    }

    /**
     * Sets the domain crosshair value.
     * <P>
     * Registered listeners are notified that the plot has been modified, but
     * only if the crosshair is visible.
     *
     * @param value  the new value.
     */
    public void setRangeCrosshairValue(double value) {

        setRangeCrosshairValue(value, true);

    }

    /**
     * Sets the range crosshair value.
     * <P>
     * Registered listeners are notified that the axis has been modified, but
     * only if the crosshair is visible.
     *
     * @param value  the new value.
     * @param notify  a flag that controls whether or not listeners are notified.
     */
    public void setRangeCrosshairValue(double value, boolean notify) {

        this.rangeCrosshairValue = value;
        if (isRangeCrosshairVisible() && notify) {
            notifyListeners(new PlotChangeEvent(this));
        }

    }

    /**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av网站| 国产欧美一区二区三区鸳鸯浴| 欧美一级黄色大片| 国产精品久久久久永久免费观看| 天堂va蜜桃一区二区三区漫画版| 国产精品99久久久久久有的能看| 欧美视频一区二| 国产精品丝袜91| 青青草91视频| 欧美亚洲国产一区在线观看网站| 国产日韩在线不卡| 久久99精品国产| 91麻豆精品国产91久久久使用方法 | 日韩精品自拍偷拍| 一区二区三区在线高清| 黄色日韩三级电影| 欧美电影免费观看高清完整版 | 亚洲国产激情av| 久久不见久久见免费视频1| 欧美日韩一区久久| 亚洲人成小说网站色在线| 成人网在线免费视频| 精品国产乱码久久久久久图片| 亚洲成人黄色影院| 欧美日韩亚洲综合| 亚洲亚洲精品在线观看| 色先锋久久av资源部| 中文字幕中文乱码欧美一区二区| 国产精品一区一区| 精品国产乱码久久久久久闺蜜| 日韩高清在线一区| 91精品国产品国语在线不卡| 日韩专区欧美专区| 欧美大白屁股肥臀xxxxxx| 日本亚洲天堂网| 制服丝袜中文字幕亚洲| 日本不卡的三区四区五区| 7777精品伊人久久久大香线蕉| 亚洲a一区二区| 欧美一区二区福利在线| 久久99久久久久久久久久久| 欧美不卡一区二区三区| 国产精品一区三区| 国产精品视频观看| 日本精品视频一区二区| 偷拍一区二区三区| 日韩一区二区三区观看| 国产精品综合网| 国产喷白浆一区二区三区| 97精品国产97久久久久久久久久久久| 中文字幕一区二区在线播放| 91国产成人在线| 全国精品久久少妇| 国产午夜精品一区二区| 99久久精品国产一区二区三区| 中文字幕一区二区三区av| 在线观看日韩av先锋影音电影院| 亚洲一区二区精品久久av| 91精品国产高清一区二区三区| 精品综合免费视频观看| 久久精品一区二区三区av| 99精品国产99久久久久久白柏| 亚洲激情校园春色| 欧美一区二区三区免费在线看| 国产在线乱码一区二区三区| 亚洲视频在线一区| 在线成人av影院| 国产精品99久久久久久宅男| 亚洲美女偷拍久久| 久久天堂av综合合色蜜桃网| 91伊人久久大香线蕉| 青青国产91久久久久久| 亚洲国产高清不卡| 欧美一级一区二区| 91麻豆成人久久精品二区三区| 欧美videos大乳护士334| 777午夜精品视频在线播放| 欧美v日韩v国产v| 洋洋av久久久久久久一区| 91精品国产91久久久久久最新毛片 | 经典三级一区二区| 中文字幕一区二区在线播放| 91精品视频网| 色美美综合视频| 国产综合色精品一区二区三区| 综合自拍亚洲综合图不卡区| 欧美一级免费大片| 色综合天天综合网天天狠天天| 国产又粗又猛又爽又黄91精品| 一区二区三区国产精品| 中文一区二区在线观看| 日韩情涩欧美日韩视频| 欧美自拍丝袜亚洲| 欧美日韩国产综合视频在线观看 | 看片网站欧美日韩| 亚洲精品精品亚洲| 久久久夜色精品亚洲| 欧美日精品一区视频| 岛国精品一区二区| 精品一区二区av| 青青草国产精品97视觉盛宴 | 在线精品视频免费观看| 国产不卡视频一区| 国产精品主播直播| 久久丁香综合五月国产三级网站| 午夜精品福利一区二区蜜股av | 久久这里只有精品6| 日韩精品一区二区三区中文不卡 | 蜜臀久久久99精品久久久久久| 一区二区三区日韩在线观看| 国产精品高清亚洲| 中文字幕精品在线不卡| 国产欧美在线观看一区| 久久精品视频在线看| 欧美不卡激情三级在线观看| 欧美一区二区三区四区久久| 欧美视频日韩视频在线观看| 在线观看亚洲a| 欧美优质美女网站| 欧美日韩精品一区二区天天拍小说 | 国产成人亚洲综合a∨婷婷图片| 久久精品国产99国产| 国产一区二区中文字幕| 国产一区二三区好的| 福利一区二区在线| av在线这里只有精品| 91黄视频在线观看| 欧美日韩高清在线| 日韩欧美一区二区免费| 久久久久久久久久久久久女国产乱| 久久婷婷色综合| 中文字幕久久午夜不卡| 亚洲乱码中文字幕| 天天综合天天做天天综合| 蜜乳av一区二区| 国产盗摄女厕一区二区三区| eeuss鲁一区二区三区| 色噜噜夜夜夜综合网| 欧美精品乱码久久久久久| 欧美mv日韩mv| 日韩美女视频19| 偷拍一区二区三区四区| 国产一区二区伦理| 色悠悠久久综合| 日韩一区二区在线免费观看| 中文字幕精品综合| 午夜精品爽啪视频| 国产电影精品久久禁18| 在线观看日韩一区| 亚洲精品在线免费播放| 亚洲人成网站在线| 精品一区二区三区免费观看| 99re在线精品| 日韩欧美卡一卡二| 亚洲欧洲国产日本综合| 蜜桃视频一区二区三区在线观看| 丁香激情综合国产| 欧美电影影音先锋| 亚洲色图在线看| 精品一区二区三区视频| 色婷婷亚洲精品| 久久久国产精品麻豆| 天堂av在线一区| 91浏览器在线视频| 2017欧美狠狠色| 亚洲大片一区二区三区| 国产成人精品免费看| 欧美久久久久久蜜桃| 国产精品国产三级国产aⅴ原创| 五月婷婷欧美视频| 91在线丨porny丨国产| 精品不卡在线视频| 日韩精品视频网站| 欧美色图片你懂的| 亚洲欧洲精品成人久久奇米网| 精品无人码麻豆乱码1区2区 | 成人av免费在线| 日韩午夜在线观看| 亚洲一区二区精品视频| 97精品超碰一区二区三区| 国产亚洲精品aa| 日av在线不卡| 欧美挠脚心视频网站| 一区二区三区四区高清精品免费观看 | 成人ar影院免费观看视频| 欧美一级欧美一级在线播放| 亚洲国产视频网站| 色综合天天综合色综合av| 中文字幕av一区二区三区| 精久久久久久久久久久| 欧美tickling网站挠脚心| 视频一区视频二区中文| 欧美日韩一区在线| 亚洲一区二区在线观看视频 | 粉嫩一区二区三区在线看| 欧美精品一区二区在线观看| 麻豆一区二区在线| 欧美大片顶级少妇| 韩国欧美国产一区| 久久久久久久久免费|