Class DropShadowBorder

java.lang.Object
org.jdesktop.swingx.border.DropShadowBorder
All Implemented Interfaces:
Serializable, Border

@JavaBean public class DropShadowBorder extends Object implements Border, 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:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • CACHE

      private static final Map<Double,Map<DropShadowBorder.Position,BufferedImage>> CACHE
    • shadowColor

      private 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 Details

    • DropShadowBorder

      public DropShadowBorder()
    • DropShadowBorder

      public DropShadowBorder(Color shadowColor, int shadowSize)
    • DropShadowBorder

      public DropShadowBorder(boolean showLeftShadow)
    • DropShadowBorder

      public DropShadowBorder(Color shadowColor, int shadowSize, float shadowOpacity, int cornerSize, boolean showTopShadow, boolean showLeftShadow, boolean showBottomShadow, boolean showRightShadow)
  • Method Details

    • paintBorder

      public void paintBorder(Component c, Graphics graphics, int x, int y, int width, int height)
      Specified by:
      paintBorder in interface Border
    • getImages

    • getSubImage

      private BufferedImage getSubImage(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 Insets getBorderInsets(Component c)
      Specified by:
      getBorderInsets in interface Border
    • isBorderOpaque

      public boolean isBorderOpaque()
      Specified by:
      isBorderOpaque in interface Border
    • isShowTopShadow

      public boolean isShowTopShadow()
    • isShowLeftShadow

      public boolean isShowLeftShadow()
    • isShowRightShadow

      public boolean isShowRightShadow()
    • isShowBottomShadow

      public boolean isShowBottomShadow()
    • getShadowSize

      public int getShadowSize()
    • getShadowColor

      public Color getShadowColor()
    • getShadowOpacity

      public float getShadowOpacity()
    • getCornerSize

      public int getCornerSize()
    • setShadowColor

      public void setShadowColor(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)