plot.java

来自「JfreeChart 常用图表例子」· Java 代码 · 共 1,228 行 · 第 1/3 页

JAVA
1,228
字号
     * Returns true if this plot is part of a combined plot structure.     *     * @return <code>true</code> if this plot is part of a combined plot      *         structure.     */    public boolean isSubplot() {        return (getParent() != null);    }    /**     * Returns the insets for the plot area.     *     * @return The insets (never <code>null</code>).     */    public RectangleInsets getInsets() {        return this.insets;    }    /**     * Sets the insets for the plot and sends a {@link PlotChangeEvent} to      * all registered listeners.     *     * @param insets  the new insets (<code>null</code> not permitted).     */    public void setInsets(RectangleInsets insets) {        setInsets(insets, true);    }    /**     * Sets the insets for the plot and, if requested,  and sends a      * {@link PlotChangeEvent} to all registered listeners.     *     * @param insets  the new insets (<code>null</code> not permitted).     * @param notify  a flag that controls whether the registered listeners are     *                notified.     */    public void setInsets(RectangleInsets insets, boolean notify) {        if (insets == null) {            throw new IllegalArgumentException("Null 'insets' argument.");        }        if (!this.insets.equals(insets)) {            this.insets = insets;            if (notify) {                notifyListeners(new PlotChangeEvent(this));            }        }    }    /**     * Returns the background color of the plot area.     *     * @return The paint (possibly <code>null</code>).     */    public Paint getBackgroundPaint() {        return this.backgroundPaint;    }    /**     * Sets the background color of the plot area and sends a      * {@link PlotChangeEvent} to all registered listeners.     *     * @param paint  the paint (<code>null</code> permitted).     */    public void setBackgroundPaint(Paint paint) {        if (paint == null) {            if (this.backgroundPaint != null) {                this.backgroundPaint = null;                notifyListeners(new PlotChangeEvent(this));            }        }        else {            if (this.backgroundPaint != null) {                if (this.backgroundPaint.equals(paint)) {                    return;  // nothing to do                }            }            this.backgroundPaint = paint;            notifyListeners(new PlotChangeEvent(this));        }    }    /**     * Returns the alpha transparency of the plot area background.     *     * @return The alpha transparency.     */    public float getBackgroundAlpha() {        return this.backgroundAlpha;    }    /**     * Sets the alpha transparency of the plot area background, and notifies     * registered listeners that the plot has been modified.     *     * @param alpha the new alpha value.     */    public void setBackgroundAlpha(float alpha) {        if (this.backgroundAlpha != alpha) {            this.backgroundAlpha = alpha;            notifyListeners(new PlotChangeEvent(this));        }    }    /**     * Returns the drawing supplier for the plot.     *     * @return The drawing supplier (possibly <code>null</code>).     */    public DrawingSupplier getDrawingSupplier() {        DrawingSupplier result = null;        Plot p = getParent();        if (p != null) {            result = p.getDrawingSupplier();        }        else {            result = this.drawingSupplier;        }        return result;    }    /**     * Sets the drawing supplier for the plot.  The drawing supplier is      * responsible for supplying a limitless (possibly repeating) sequence of      * <code>Paint</code>, <code>Stroke</code> and <code>Shape</code> objects      * that the plot's renderer(s) can use to populate its (their) tables.     *     * @param supplier  the new supplier.     */    public void setDrawingSupplier(DrawingSupplier supplier) {        this.drawingSupplier = supplier;        notifyListeners(new PlotChangeEvent(this));    }    /**     * Returns the background image that is used to fill the plot's background      * area.     *     * @return The image (possibly <code>null</code>).     */    public Image getBackgroundImage() {        return this.backgroundImage;    }    /**     * Sets the background image for the plot.     *     * @param image  the image (<code>null</code> permitted).     */    public void setBackgroundImage(Image image) {        this.backgroundImage = image;        notifyListeners(new PlotChangeEvent(this));    }    /**     * Returns the background image alignment. Alignment constants are defined      * in the <code>org.jfree.ui.Align</code> class in the JCommon class      * library.     *     * @return The alignment.     */    public int getBackgroundImageAlignment() {        return this.backgroundImageAlignment;    }    /**     * Sets the alignment for the background image and sends a      * {@link PlotChangeEvent} to all registered listeners.  Alignment options      * are defined by the {@link org.jfree.ui.Align} class in the JCommon      * class library.     *     * @param alignment  the alignment.     */    public void setBackgroundImageAlignment(int alignment) {        if (this.backgroundImageAlignment != alignment) {            this.backgroundImageAlignment = alignment;            notifyListeners(new PlotChangeEvent(this));        }    }    /**     * Returns the stroke used to outline the plot area.     *     * @return The stroke (possibly <code>null</code>).     */    public Stroke getOutlineStroke() {        return this.outlineStroke;    }    /**     * Sets the stroke used to outline the plot area and sends a      * {@link PlotChangeEvent} to all registered listeners. If you set this      * attribute to <code>null<.code>, no outline will be drawn.     *     * @param stroke  the stroke (<code>null</code> permitted).     */    public void setOutlineStroke(Stroke stroke) {        if (stroke == null) {            if (this.outlineStroke != null) {                this.outlineStroke = null;                notifyListeners(new PlotChangeEvent(this));            }        }        else {            if (this.outlineStroke != null) {                if (this.outlineStroke.equals(stroke)) {                    return;  // nothing to do                }            }            this.outlineStroke = stroke;            notifyListeners(new PlotChangeEvent(this));        }    }    /**     * Returns the color used to draw the outline of the plot area.     *     * @return The color (possibly <code>null<code>).     */    public Paint getOutlinePaint() {        return this.outlinePaint;    }    /**     * Sets the paint used to draw the outline of the plot area and sends a      * {@link PlotChangeEvent} to all registered listeners.  If you set this      * attribute to <code>null</code>, no outline will be drawn.     *     * @param paint  the paint (<code>null</code> permitted).     */    public void setOutlinePaint(Paint paint) {        if (paint == null) {            if (this.outlinePaint != null) {                this.outlinePaint = null;                notifyListeners(new PlotChangeEvent(this));            }        }        else {            if (this.outlinePaint != null) {                if (this.outlinePaint.equals(paint)) {                    return;  // nothing to do                }            }            this.outlinePaint = paint;            notifyListeners(new PlotChangeEvent(this));        }    }    /**     * Returns the alpha-transparency for the plot foreground.     *     * @return The alpha-transparency.     */    public float getForegroundAlpha() {        return this.foregroundAlpha;    }    /**     * Sets the alpha-transparency for the plot.     *     * @param alpha  the new alpha transparency.     */    public void setForegroundAlpha(float alpha) {        if (this.foregroundAlpha != alpha) {            this.foregroundAlpha = alpha;            notifyListeners(new PlotChangeEvent(this));        }    }    /**     * Returns the legend items for the plot.  By default, this method returns      * <code>null</code>.  Subclasses should override to return a      * {@link LegendItemCollection}.     *     * @return The legend items for the plot (possibly <code>null</code>).     */    public LegendItemCollection getLegendItems() {        return null;    }    /**     * Registers an object for notification of changes to the plot.     *     * @param listener  the object to be registered.     */    public void addChangeListener(PlotChangeListener listener) {        this.listenerList.add(PlotChangeListener.class, listener);    }    /**     * Unregisters an object for notification of changes to the plot.     *     * @param listener  the object to be unregistered.     */    public void removeChangeListener(PlotChangeListener listener) {        this.listenerList.remove(PlotChangeListener.class, listener);    }    /**     * Notifies all registered listeners that the plot has been modified.     *     * @param event  information about the change event.     */    public void notifyListeners(PlotChangeEvent event) {        Object[] listeners = this.listenerList.getListenerList();        for (int i = listeners.length - 2; i >= 0; i -= 2) {            if (listeners[i] == PlotChangeListener.class) {                ((PlotChangeListener) listeners[i + 1]).plotChanged(event);            }        }    }    /**     * Draws the plot within the specified area.  The anchor is a point on the     * chart that is specified externally (for instance, it may be the last     * point of the last mouse click performed by the user) - plots can use or     * ignore this value as they see fit.      * <br><br>     * Subclasses need to provide an implementation of this method, obviously.     *      * @param g2  the graphics device.     * @param area  the plot area.     * @param anchor  the anchor point (<code>null</code> permitted).     * @param parentState  the parent state (if any).     * @param info  carries back plot rendering info.     */    public abstract void draw(Graphics2D g2,                              Rectangle2D area,                              Point2D anchor,                              PlotState parentState,                              PlotRenderingInfo info);                                  /**     * Draws the plot background (the background color and/or image).     * <P>     * This method will be called during the chart drawing process and is      * declared public so that it can be accessed by the renderers used by      * certain subclasses.  You shouldn't need to call this method directly.     *     * @param g2  the graphics device.     * @param area  the area within which the plot should be drawn.     */    public void drawBackground(Graphics2D g2, Rectangle2D area) {        fillBackground(g2, area);        drawBackgroundImage(g2, area);    }    /**     * Fills the specified area with the background paint.     *      * @param g2  the graphics device.     * @param area  the area.     */    protected void fillBackground(Graphics2D g2, Rectangle2D area) {        if (this.backgroundPaint != null) {            Composite originalComposite = g2.getComposite();            g2.setComposite(                AlphaComposite.getInstance(                    AlphaComposite.SRC_OVER, this.backgroundAlpha                )            );            g2.setPaint(this.backgroundPaint);            g2.fill(area);            g2.setComposite(originalComposite);        }            }        /**     * Draws the background image (if there is one) aligned within the      * specified area.     *      * @param g2  the graphics device.     * @param area  the area.     */    protected void drawBackgroundImage(Graphics2D g2, Rectangle2D area) {        if (this.backgroundImage != null) {            Composite originalComposite = g2.getComposite();            g2.setComposite(AlphaComposite.getInstance(                AlphaComposite.SRC, this.backgroundAlpha            ));            Rectangle2D dest = new Rectangle2D.Double(                0.0, 0.0,                this.backgroundImage.getWidth(null),                 this.backgroundImage.getHeight(null)            );            Align.align(dest, area, this.backgroundImageAlignment);            g2.drawImage(                this.backgroundImage,                (int) dest.getX(), (int) dest.getY(),                (int) dest.getWidth() + 1, (int) dest.getHeight() + 1, null            );            g2.setComposite(originalComposite);        }    }        /**     * Draws the plot outline.  This method will be called during the chart      * drawing process and is declared public so that it can be accessed by the

⌨️ 快捷键说明

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