Class DropShadowBorder

  • All Implemented Interfaces:
    java.io.Serializable, javax.swing.border.Border

    @JavaBean
    public class DropShadowBorder
    extends java.lang.Object
    implements javax.swing.border.Border, java.io.Serializable
    Implements a DropShadow for components. In general, the DropShadowBorder will work with any rectangular components that do not have a default border installed as part of the look and feel, or otherwise. For example, DropShadowBorder works wonderfully with JPanel, but horribly with JComboBox.

    Note: DropShadowBorder should usually be added to non-opaque components, otherwise the background is likely to bleed through.

    Note: Since generating drop shadows is relatively expensive operation, DropShadowBorder keeps internal static cache that allows sharing same border for multiple re-rendering and between different instances of the class. Since this cache is shared at class level and never reset, it might bleed your app memory in case you tend to create many different borders rapidly.

    See Also:
    Serialized Form
    • Field Detail

      • CACHE

        private static final java.util.Map<java.lang.Double,​java.util.Map<DropShadowBorder.Position,​java.awt.image.BufferedImage>> CACHE
      • shadowColor

        private java.awt.Color shadowColor
      • shadowSize

        private int shadowSize
      • shadowOpacity

        private float shadowOpacity
      • cornerSize

        private int cornerSize
      • showTopShadow

        private boolean showTopShadow
      • showLeftShadow

        private boolean showLeftShadow
      • showBottomShadow

        private boolean showBottomShadow
      • showRightShadow

        private boolean showRightShadow
    • Constructor Detail

      • DropShadowBorder

        public DropShadowBorder()
      • DropShadowBorder

        public DropShadowBorder​(java.awt.Color shadowColor,
                                int shadowSize)
      • DropShadowBorder

        public DropShadowBorder​(boolean showLeftShadow)
      • DropShadowBorder

        public DropShadowBorder​(java.awt.Color shadowColor,
                                int shadowSize,
                                float shadowOpacity,
                                int cornerSize,
                                boolean showTopShadow,
                                boolean showLeftShadow,
                                boolean showBottomShadow,
                                boolean showRightShadow)
    • Method Detail

      • paintBorder

        public void paintBorder​(java.awt.Component c,
                                java.awt.Graphics graphics,
                                int x,
                                int y,
                                int width,
                                int height)
        Specified by:
        paintBorder in interface javax.swing.border.Border
      • getImages

        private java.util.Map<DropShadowBorder.Position,​java.awt.image.BufferedImage> getImages​(java.awt.Graphics2D g2)
      • getSubImage

        private java.awt.image.BufferedImage getSubImage​(java.awt.image.BufferedImage img,
                                                         int x,
                                                         int y,
                                                         int w,
                                                         int h)
        Returns a new BufferedImage that represents a subregion of the given BufferedImage. (Note that this method does not use BufferedImage.getSubimage(), which will defeat image acceleration strategies on later JDKs.)
      • getBorderInsets

        public java.awt.Insets getBorderInsets​(java.awt.Component c)
        Specified by:
        getBorderInsets in interface javax.swing.border.Border
      • isBorderOpaque

        public boolean isBorderOpaque()
        Specified by:
        isBorderOpaque in interface javax.swing.border.Border
      • isShowTopShadow

        public boolean isShowTopShadow()
      • isShowLeftShadow

        public boolean isShowLeftShadow()
      • isShowRightShadow

        public boolean isShowRightShadow()
      • isShowBottomShadow

        public boolean isShowBottomShadow()
      • getShadowSize

        public int getShadowSize()
      • getShadowColor

        public java.awt.Color getShadowColor()
      • getShadowOpacity

        public float getShadowOpacity()
      • getCornerSize

        public int getCornerSize()
      • setShadowColor

        public void setShadowColor​(java.awt.Color shadowColor)
      • setShadowSize

        public void setShadowSize​(int shadowSize)
      • setShadowOpacity

        public void setShadowOpacity​(float shadowOpacity)
      • setCornerSize

        public void setCornerSize​(int cornerSize)
      • setShowTopShadow

        public void setShowTopShadow​(boolean showTopShadow)
      • setShowLeftShadow

        public void setShowLeftShadow​(boolean showLeftShadow)
      • setShowBottomShadow

        public void setShowBottomShadow​(boolean showBottomShadow)
      • setShowRightShadow

        public void setShowRightShadow​(boolean showRightShadow)