texttitle.java

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

JAVA
678
字号
    public void setToolTipText(String text) {        this.toolTipText = text;        notifyListeners(new TitleChangeEvent(this));    }    /**     * Returns the URL text.     *     * @return The URL text (possibly <code>null</code>).     */    public String getURLText() {        return this.toolTipText;    }    /**     * Sets the URL text to the specified text and sends a      * {@link TitleChangeEvent} to all registered listeners.     *     * @param text  the text (<code>null</code> permitted).     */    public void setURLText(String text) {        this.urlText = text;        notifyListeners(new TitleChangeEvent(this));    }    /**     * Arranges the contents of the block, within the given constraints, and      * returns the block size.     *      * @param g2  the graphics device.     * @param constraint  the constraint (<code>null</code> not permitted).     *      * @return The block size (in Java2D units, never <code>null</code>).     */    public Size2D arrange(Graphics2D g2, RectangleConstraint constraint) {        RectangleConstraint cc = toContentConstraint(constraint);        LengthConstraintType w = cc.getWidthConstraintType();        LengthConstraintType h = cc.getHeightConstraintType();        Size2D contentSize = null;        if (w == LengthConstraintType.NONE) {            if (h == LengthConstraintType.NONE) {                throw new RuntimeException("Not yet implemented.");             }            else if (h == LengthConstraintType.RANGE) {                throw new RuntimeException("Not yet implemented.");             }            else if (h == LengthConstraintType.FIXED) {                throw new RuntimeException("Not yet implemented.");                             }                    }        else if (w == LengthConstraintType.RANGE) {            if (h == LengthConstraintType.NONE) {                throw new RuntimeException("Not yet implemented.");             }            else if (h == LengthConstraintType.RANGE) {                contentSize = arrangeRR(g2, cc);             }            else if (h == LengthConstraintType.FIXED) {                throw new RuntimeException("Not yet implemented.");                             }        }        else if (w == LengthConstraintType.FIXED) {            if (h == LengthConstraintType.NONE) {                throw new RuntimeException("Not yet implemented.");             }            else if (h == LengthConstraintType.RANGE) {                throw new RuntimeException("Not yet implemented.");             }            else if (h == LengthConstraintType.FIXED) {                throw new RuntimeException("Not yet implemented.");                             }        }        return new Size2D(            calculateTotalWidth(contentSize.getWidth()),            calculateTotalHeight(contentSize.getHeight())        );    }        protected Size2D arrangeRR(Graphics2D g2, RectangleConstraint constraint) {        float maxWidth = (float) constraint.getWidthRange().getUpperBound();        g2.setFont(this.font);        this.content = TextUtilities.createTextBlock(            this.text, this.font, this.paint, maxWidth, new G2TextMeasurer(g2)        );        return this.content.calculateDimensions(g2);    }        /**     * Draws the title on a Java 2D graphics device (such as the screen or a      * printer).     *     * @param g2  the graphics device.     * @param area  the area allocated for the title.     */    public void draw(Graphics2D g2, Rectangle2D area) {        draw(g2, area, null);    }        /**     * Draws the block within the specified area.     *      * @param g2  the graphics device.     * @param area  the area.     * @param params  if this is an instance of {@link EntityBlockParams} it     *                is used to determine whether or not an      *                {@link EntityCollection} is returned by this method.     *      * @return An {@link EntityCollection} containing a chart entity for the     *         title, or <code>null</code>.     */    public Object draw(Graphics2D g2, Rectangle2D area, Object params) {        if (this.content == null) {            return null;           }        area = trimMargin(area);        drawBorder(g2, area);        if (this.text.equals("")) {            return null;        }        ChartEntity entity = null;        if (params instanceof EntityBlockParams) {            EntityBlockParams p = (EntityBlockParams) params;            if (p.getGenerateEntities()) {                entity = new ChartEntity(area, this.toolTipText, this.urlText);                }        }        area = trimBorder(area);        if (this.backgroundPaint != null) {            g2.setPaint(this.backgroundPaint);            g2.fill(area);        }        area = trimPadding(area);        RectangleEdge position = getPosition();        if (position == RectangleEdge.TOP || position == RectangleEdge.BOTTOM) {            drawHorizontal(g2, area);        }        else if (position == RectangleEdge.LEFT                  || position == RectangleEdge.RIGHT) {            drawVertical(g2, area);        }        BlockResult result = new BlockResult();        if (entity != null) {            StandardEntityCollection sec = new StandardEntityCollection();            sec.add(entity);            result.setEntityCollection(sec);        }        return result;    }    /**     * Draws a the title horizontally within the specified area.  This method      * will be called from the {@link #draw(Graphics2D, Rectangle2D) draw}      * method.     *      * @param g2  the graphics device.     * @param area  the area for the title.     */    protected void drawHorizontal(Graphics2D g2, Rectangle2D area) {        Rectangle2D titleArea = (Rectangle2D) area.clone();        g2.setFont(this.font);        g2.setPaint(this.paint);        TextBlockAnchor anchor = null;        float x = 0.0f;        HorizontalAlignment horizontalAlignment = getHorizontalAlignment();        if (horizontalAlignment == HorizontalAlignment.LEFT) {            x = (float) titleArea.getX();            anchor = TextBlockAnchor.TOP_LEFT;        }        else if (horizontalAlignment == HorizontalAlignment.RIGHT) {            x = (float) titleArea.getMaxX();            anchor = TextBlockAnchor.TOP_RIGHT;        }        else if (horizontalAlignment == HorizontalAlignment.CENTER) {            x = (float) titleArea.getCenterX();            anchor = TextBlockAnchor.TOP_CENTER;        }        float y = 0.0f;        RectangleEdge position = getPosition();        if (position == RectangleEdge.TOP) {            y = (float) titleArea.getY();        }        else if (position == RectangleEdge.BOTTOM) {            y = (float) titleArea.getMaxY();            if (horizontalAlignment == HorizontalAlignment.LEFT) {                anchor = TextBlockAnchor.BOTTOM_LEFT;            }            else if (horizontalAlignment == HorizontalAlignment.CENTER) {                anchor = TextBlockAnchor.BOTTOM_CENTER;            }            else if (horizontalAlignment == HorizontalAlignment.RIGHT) {                anchor = TextBlockAnchor.BOTTOM_RIGHT;            }        }        this.content.draw(g2, x, y, anchor);    }        /**     * Draws a the title vertically within the specified area.  This method      * will be called from the {@link #draw(Graphics2D, Rectangle2D) draw}      * method.     *      * @param g2  the graphics device.     * @param area  the area for the title.     */    protected void drawVertical(Graphics2D g2, Rectangle2D area) {        Rectangle2D titleArea = (Rectangle2D) area.clone();        g2.setFont(this.font);        g2.setPaint(this.paint);        TextBlockAnchor anchor = null;        float y = 0.0f;        VerticalAlignment verticalAlignment = getVerticalAlignment();        if (verticalAlignment == VerticalAlignment.TOP) {            y = (float) titleArea.getY();            anchor = TextBlockAnchor.TOP_RIGHT;        }        else if (verticalAlignment == VerticalAlignment.BOTTOM) {            y = (float) titleArea.getMaxY();            anchor = TextBlockAnchor.TOP_LEFT;        }        else if (verticalAlignment == VerticalAlignment.CENTER) {            y = (float) titleArea.getCenterY();            anchor = TextBlockAnchor.TOP_CENTER;        }        float x = 0.0f;        RectangleEdge position = getPosition();        if (position == RectangleEdge.LEFT) {            x = (float) titleArea.getX();        }        else if (position == RectangleEdge.RIGHT) {            x = (float) titleArea.getMaxX();            if (verticalAlignment == VerticalAlignment.TOP) {                anchor = TextBlockAnchor.BOTTOM_RIGHT;            }            else if (verticalAlignment == VerticalAlignment.CENTER) {                anchor = TextBlockAnchor.BOTTOM_CENTER;            }            else if (verticalAlignment == VerticalAlignment.BOTTOM) {                anchor = TextBlockAnchor.BOTTOM_LEFT;            }        }        this.content.draw(g2, x, y, anchor, x, y, -Math.PI / 2.0);    }    /**     * Tests this title for equality with another object.     *     * @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 TextTitle)) {            return false;        }        if (!super.equals(obj)) {            return false;        }        TextTitle that = (TextTitle) obj;        if (!ObjectUtilities.equal(this.text, that.text)) {            return false;        }        if (!ObjectUtilities.equal(this.font, that.font)) {            return false;        }        if (!ObjectUtilities.equal(this.paint, that.paint)) {            return false;        }        if (!ObjectUtilities.equal(            this.backgroundPaint, that.backgroundPaint)        ) {            return false;        }        return true;    }    /**     * Returns a hash code.     *      * @return A hash code.     */    public int hashCode() {        int result = super.hashCode();        result = 29 * result + (this.text != null ? this.text.hashCode() : 0);        result = 29 * result + (this.font != null ? this.font.hashCode() : 0);        result = 29 * result + (this.paint != null ? this.paint.hashCode() : 0);        result = 29 * result + (            this.backgroundPaint != null ? this.backgroundPaint.hashCode() : 0        );        return result;    }    /**     * Returns a clone of this object.     *      * @return A clone.     *      * @throws CloneNotSupportedException never.     */    public Object clone() throws CloneNotSupportedException {        return super.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.writePaint(this.paint, stream);        SerialUtilities.writePaint(this.backgroundPaint, 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.paint = SerialUtilities.readPaint(stream);        this.backgroundPaint = SerialUtilities.readPaint(stream);    }}

⌨️ 快捷键说明

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