Class ShapePainter

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

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

    A Painter that paints java.awt.Shapes. It uses a stroke and a fillPaint to do so. The shape is painted as is, at a specific location. If no Shape is specified, nothing will be painted. If no stroke is specified, the default for the Graphics2D will be used. If no fillPaint is specified, the component background color will be used. The shape can be positioned using the insets, horizontal, and vertical properties.

    Here is an example that draws a rectangle aligned on the center right:

    
      Rectangle2D.Double rect = new Rectangle2D.Double(0, 0, 50, 50);
      ShapePainter p = new ShapePainter(rect);
     p.setHorizontal(HorizontalAlignment.RIGHT);
     p.setVertical(VerticalAlignment.CENTER);
     
    • Field Detail

      • shape

        private java.awt.Shape shape
        The Shape to fillPaint. If null, nothing is painted.
    • Constructor Detail

      • ShapePainter

        public ShapePainter()
        Create a new ShapePainter
      • ShapePainter

        public ShapePainter​(java.awt.Shape shape)
        Create a new ShapePainter with the specified shape.
        Parameters:
        shape - the shape to fillPaint
      • ShapePainter

        public ShapePainter​(java.awt.Shape shape,
                            java.awt.Paint paint)
        Create a new ShapePainter with the specified shape and fillPaint.
        Parameters:
        shape - the shape to fillPaint
        paint - the fillPaint to be used to fillPaint the shape
      • ShapePainter

        public ShapePainter​(java.awt.Shape shape,
                            java.awt.Paint paint,
                            AbstractAreaPainter.Style style)
        Create a new ShapePainter with the specified shape and fillPaint. The shape can be filled or stroked (only the outline is painted).
        Parameters:
        shape - the shape to fillPaint
        paint - the fillPaint to be used to fillPaint the shape
        style - specifies the ShapePainter.Style to use for painting this shape. If null, then Style.BOTH is used
    • Method Detail

      • setShape

        public void setShape​(java.awt.Shape s)
        Sets the shape to fillPaint. This shape is not resized when the component bounds are. To do that, create a custom shape that is bound to the component width/height
        Parameters:
        s - the Shape to fillPaint. May be null
      • getShape

        public java.awt.Shape getShape()
        Gets the current shape
        Returns:
        the Shape to fillPaint. May be null
      • doPaint

        protected void doPaint​(java.awt.Graphics2D g,
                               java.lang.Object component,
                               int w,
                               int h)
        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
      • drawShape

        private void drawShape​(java.awt.Graphics2D g,
                               java.awt.Shape s,
                               java.lang.Object component,
                               int w,
                               int h)
      • fillShape

        private void fillShape​(java.awt.Graphics2D g,
                               java.awt.Shape s,
                               java.lang.Object component,
                               int w,
                               int h)
      • 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
      • calculateStrokePaint

        private java.awt.Paint calculateStrokePaint​(java.lang.Object component,
                                                    int width,
                                                    int height)
      • calculateFillPaint

        private java.awt.Paint calculateFillPaint​(java.lang.Object component,
                                                  int width,
                                                  int height)
      • drawPathEffects

        private void drawPathEffects​(java.awt.Graphics2D g,
                                     java.awt.Shape s,
                                     int w,
                                     int h)