Class ImagePainter

  • All Implemented Interfaces:
    Painter<java.lang.Object>

    @JavaBean
    public class ImagePainter
    extends AbstractAreaPainter<java.lang.Object>

    A Painter instance that paints an image. Any Image is acceptable. This Painter also allows the developer to specify a "Style" -- CENTERED, TILED, SCALED, POSITIONED, and CSS_POSITIONED; with the following meanings:

    • CENTERED: draws the image unscaled and positioned in the center of the component
    • TILED: draws the image repeatedly across the component, filling the entire background.
    • SCALED: draws the image stretched large enough (or small enough) to cover the entire component. The stretch may not preserve the aspect ratio of the original image.
    • POSITIONED: draws the image at the location specified by the imageLocation property. This style of drawing will respect the imageScale property.
    • CSS_POSITIONED: draws the image using CSS style background positioning. It will use the location specified by the imageLocation property. This property should contain a point with the x and y values between 0 and 1. 0,0 will put the image in the upper left hand corner, 1,1 in the lower right, and 0.5,0.5 in the center. All other values will be interpolated accordingly. For a more complete definition of the positioning algorithm see the CSS 2.1 spec.
    • Field Detail

      • LOG

        private static final java.util.logging.Logger LOG
        Logger to use
      • img

        private transient java.awt.image.BufferedImage img
        The image to draw
      • horizontalRepeat

        private boolean horizontalRepeat
      • verticalRepeat

        private boolean verticalRepeat
      • scaleToFit

        private boolean scaleToFit
      • imageScale

        private double imageScale
    • Constructor Detail

      • ImagePainter

        public ImagePainter()
        Create a new ImagePainter. By default there is no image, and the alignment is centered.
      • ImagePainter

        public ImagePainter​(java.awt.image.BufferedImage image)
        Create a new ImagePainter with the specified image and the Style Style.CENTERED
        Parameters:
        image - the image to be painted
    • Method Detail

      • setImage

        public void setImage​(java.awt.image.BufferedImage image)
        Sets the image to paint with.
        Parameters:
        image - if null, clears the image. Otherwise, this will set the image to be painted.
      • getImage

        public java.awt.image.BufferedImage getImage()
        Gets the current image used for painting.
        Returns:
        the image used for painting
      • doPaint

        protected void doPaint​(java.awt.Graphics2D g,
                               java.lang.Object component,
                               int width,
                               int height)
        Subclasses must implement this method and perform custom painting operations here.
        Specified by:
        doPaint in class AbstractPainter<java.lang.Object>
        Parameters:
        g - The Graphics2D object in which to paint
      • drawBackground

        private void drawBackground​(java.awt.Graphics2D g,
                                    java.awt.Shape shape,
                                    int width,
                                    int height)
      • drawBorder

        private void drawBorder​(java.awt.Graphics2D g,
                                java.awt.Shape shape,
                                int width,
                                int height)
      • isScaleToFit

        public boolean isScaleToFit()
      • setScaleToFit

        public void setScaleToFit​(boolean scaleToFit)
      • getImageScale

        public double getImageScale()
        Gets the current scaling factor used when drawing an image.
        Returns:
        the current scaling factor
      • setImageScale

        public void setImageScale​(double imageScale)
        Sets the scaling factor used when drawing the image
        Parameters:
        imageScale - the new image scaling factor
      • isHorizontalRepeat

        public boolean isHorizontalRepeat()
        Indicates if the image will be repeated horizontally.
        Returns:
        if the image will be repeated horizontally
      • setHorizontalRepeat

        public void setHorizontalRepeat​(boolean horizontalRepeat)
        Sets if the image should be repeated horizontally.
        Parameters:
        horizontalRepeat - the new horizontal repeat value
      • isVerticalRepeat

        public boolean isVerticalRepeat()
        Indicates if the image will be repeated vertically.
        Returns:
        if the image will be repeated vertically
      • setVerticalRepeat

        public void setVerticalRepeat​(boolean verticalRepeat)
        Sets if the image should be repeated vertically.
        Parameters:
        verticalRepeat - new value for the vertical repeat
      • provideShape

        protected java.awt.Shape provideShape​(java.awt.Graphics2D g,
                                              java.lang.Object comp,
                                              int width,
                                              int height)
        Description copied from class: AbstractAreaPainter
        Returns the outline shape of this painter. Subclasses must implement this method. This shape will be used for filling, stroking, and clipping.
        Specified by:
        provideShape in class AbstractAreaPainter<java.lang.Object>
        Parameters:
        g - graphics
        comp - The Object this painter will be painted on.
        width - the width to paint
        height - the height to paint
        Returns:
        the outline shape of this painter
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object