⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialplot.java

📁 java图形利器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * is one, and sends a {@link PlotChangeEvent} to all registered      * listeners.     *     * @param dataset  the dataset (<code>null</code> permitted).     */    public void setDataset(ValueDataset dataset) {        setDataset(0, dataset);    }    /**     * Sets a dataset for the plot.     *     * @param index  the dataset index.     * @param dataset  the dataset (<code>null</code> permitted).     */    public void setDataset(int index, ValueDataset dataset) {                ValueDataset existing = (ValueDataset) this.datasets.get(index);        if (existing != null) {            existing.removeChangeListener(this);        }        this.datasets.set(index, dataset);        if (dataset != null) {            dataset.addChangeListener(this);        }                // send a dataset change event to self...        DatasetChangeEvent event = new DatasetChangeEvent(this, dataset);        datasetChanged(event);            }    /**     * Returns the number of datasets.     *     * @return The number of datasets.     */    public int getDatasetCount() {        return this.datasets.size();    }            /**     * Draws the plot.  This method is usually called by the {@link JFreeChart}     * instance that manages the plot.     *      * @param g2  the graphics target.     * @param area  the area in which the plot should be drawn.     * @param anchor  the anchor point (typically the last point that the      *     mouse clicked on, <code>null</code> is permitted).     * @param parentState  the state for the parent plot (if any).     * @param info  used to collect plot rendering info (<code>null</code>      *     permitted).     */    public void draw(Graphics2D g2, Rectangle2D area, Point2D anchor,             PlotState parentState, PlotRenderingInfo info) {                // first, expand the viewing area into a drawing frame        Rectangle2D frame = viewToFrame(area);                // draw the background if there is one...        if (this.background != null && this.background.isVisible()) {            if (this.background.isClippedToWindow()) {                Shape savedClip = g2.getClip();                g2.setClip(this.dialFrame.getWindow(frame));                this.background.draw(g2, this, frame, area);                g2.setClip(savedClip);            }            else {                this.background.draw(g2, this, frame, area);            }        }                Iterator iterator = this.layers.iterator();        while (iterator.hasNext()) {            DialLayer current = (DialLayer) iterator.next();            if (current.isVisible()) {                if (current.isClippedToWindow()) {                    Shape savedClip = g2.getClip();                    g2.setClip(this.dialFrame.getWindow(frame));                    current.draw(g2, this, frame, area);                    g2.setClip(savedClip);                }                else {                    current.draw(g2, this, frame, area);                }            }        }        // draw the cap if there is one...        if (this.cap != null && this.cap.isVisible()) {            if (this.cap.isClippedToWindow()) {                Shape savedClip = g2.getClip();                g2.setClip(this.dialFrame.getWindow(frame));                this.cap.draw(g2, this, frame, area);                g2.setClip(savedClip);            }            else {                this.cap.draw(g2, this, frame, area);            }        }                if (this.dialFrame.isVisible()) {            this.dialFrame.draw(g2, this, frame, area);        }            }        /**     * Returns the frame surrounding the specified view rectangle.     *      * @param view  the view rectangle (<code>null</code> not permitted).     */    private Rectangle2D viewToFrame(Rectangle2D view) {        double width = view.getWidth() / this.viewW;        double height = view.getHeight() / this.viewH;        double x = view.getX() - (width * this.viewX);        double y = view.getY() - (height * this.viewY);        return new Rectangle2D.Double(x, y, width, height);    }        /**     * Returns the value from the specified dataset.     *      * @param datasetIndex  the dataset index.     *      * @return The data value.     */    public double getValue(int datasetIndex) {        double result = Double.NaN;        ValueDataset dataset = getDataset(datasetIndex);        if (dataset != null) {            Number n = dataset.getValue();            if (n != null) {                result = n.doubleValue();            }        }        return result;    }        /**     * Adds a dial scale to the plot.     *      * @param index  the scale index.     * @param scale  the scale.     */    public void addScale(int index, DialScale scale) {        this.layers.add(scale);        this.scales.set(index, scale);    }        /**     * Returns the scale at the given index.     *     * @param index  the scale index.     *     * @return The scale (possibly <code>null</code>).     */    public DialScale getScale(int index) {        DialScale result = null;        if (this.scales.size() > index) {            result = (DialScale) this.scales.get(index);        }        return result;    }    /**     * Maps a dataset to a particular scale.     *      * @param index  the dataset index (zero-based).     * @param scaleIndex  the scale index (zero-based).     */    public void mapDatasetToScale(int index, int scaleIndex) {        this.datasetToScaleMap.set(index, new Integer(scaleIndex));          notifyListeners(new PlotChangeEvent(this));     }        /**     * Returns the dial scale for a specific dataset.     *      * @param datasetIndex  the dataset index.     *      * @return The dial scale.     */    public DialScale getScaleForDataset(int datasetIndex) {        DialScale result = (DialScale) this.scales.get(0);            Integer scaleIndex = (Integer) this.datasetToScaleMap.get(datasetIndex);        if (scaleIndex != null) {            result = getScale(scaleIndex.intValue());        }        return result;        }        /**     * A utility method that computes a rectangle using relative radius values.     *      * @param rect  the reference rectangle.     * @param radiusW  the width radius (must be > 0.0)     * @param radiusH  the height radius.     *      * @return A new rectangle.     */    public static Rectangle2D rectangleByRadius(Rectangle2D rect,             double radiusW, double radiusH) {        double x = rect.getCenterX();        double y = rect.getCenterY();        double w = rect.getWidth() * radiusW;        double h = rect.getHeight() * radiusH;        return new Rectangle2D.Double(x - w / 2.0, y - h / 2.0, w, h);    }        /**     * Receives notification when a layer has changed.     *      * @param event  the event.     */    public void dialLayerChanged(DialLayerChangeEvent event) {        this.notifyListeners(new PlotChangeEvent(this));    }    /**     * Tests this <code>DialPlot</code> instance for equality with an      * arbitrary object.  The plot's dataset(s) is (are) not included in      * the test.     *     * @param obj  the object (<code>null</code> permitted).     *     * @return A boolean.     */    public boolean equals(Object obj) {        if (obj == this) {            return true;        }        if (!(obj instanceof DialPlot)) {            return false;        }        DialPlot that = (DialPlot) obj;        if (!ObjectUtilities.equal(this.background, that.background)) {            return false;        }        if (!ObjectUtilities.equal(this.cap, that.cap)) {            return false;        }        if (!this.dialFrame.equals(that.dialFrame)) {            return false;        }        if (this.viewX != that.viewX) {            return false;        }        if (this.viewY != that.viewY) {            return false;        }        if (this.viewW != that.viewW) {            return false;        }        if (this.viewH != that.viewH) {            return false;        }        if (!this.layers.equals(that.layers)) {            return false;        }        return super.equals(obj);    }    /**     * Returns a hash code for this instance.     *      * @return The hash code.     */    public int hashCode() {        int result = 193;        result = 37 * result + ObjectUtilities.hashCode(this.background);        result = 37 * result + ObjectUtilities.hashCode(this.cap);        result = 37 * result + this.dialFrame.hashCode();        long temp = Double.doubleToLongBits(this.viewX);        result = 37 * result + (int) (temp ^ (temp >>> 32));        temp = Double.doubleToLongBits(this.viewY);        result = 37 * result + (int) (temp ^ (temp >>> 32));        temp = Double.doubleToLongBits(this.viewW);        result = 37 * result + (int) (temp ^ (temp >>> 32));        temp = Double.doubleToLongBits(this.viewH);        result = 37 * result + (int) (temp ^ (temp >>> 32));        return result;    }        /**     * Returns the plot type.     *      * @return <code>"DialPlot"</code>     */    public String getPlotType() {        return "DialPlot";    }        /**     * 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();    }    /**     * 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();    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -