# Class Border

java.lang.Object
com.codename1.ui.plaf.Border

Direct Known Subclasses:
  `CSSBorder, RoundBorder, RoundRectBorder`

public class Border extends Object

Base class that allows us to render a border for a component, a border is drawn before the component and is drawn within the padding region of the component. It is the responsibility of the component not to draw outside of the border line.

This class can be extended to provide additional border types and custom made border types.

A border can optionally paint the background of the component, this depends on the border type and is generally required for rounded borders that "know" the area that should be filled.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `Border()`
  Prevents usage of new operator, use the factory methods in the class or subclass to create new border types.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addOuterBorder(Border outer)`
  Ads a border that wraps this border
  `void`
  `clearImageBorderSpecialTile()`
  Cleans the tile tracking state allowing the garbage collector to pick up the component and the image data
  `static Border`
  `createBevelLowered()`
  Creates a lowered bevel border with default colors, highlight is derived from the component and shadow is a plain dark color
  `static Border`
  `createBevelLowered(int highlightOuter, int highlightInner, int shadowOuter, int shadowInner)`
  Creates a raised bevel border with the given colors
  `static Border`
  `createBevelRaised()`
  Creates a lowered bevel border with default colors, highlight is derived from the component and shadow is a plain dark color
  `static Border`
  `createBevelRaised(int highlightOuter, int highlightInner, int shadowOuter, int shadowInner)`
  Creates a raised bevel border with the given colors
  `static Border`
  `createCompoundBorder(Border top, Border bottom, Border left, Border right)`
  Creates a border that is comprised of multiple border types so one border type can be used on top while another one can be used at the bottom.
  `static Border`
  `createDashedBorder(int thickness)`
  Creates a dashed border with the specified thickness and the theme colors
  `static Border`
  `createDashedBorder(int thickness, int color)`
  Creates a dashed border with the specified thickness and color
  `static Border`
  `createDottedBorder(int thickness)`
  Creates a dotted border with the specified thickness and the theme colors
  `static Border`
  `createDottedBorder(int thickness, int color)`
  Creates a dotted border with the specified thickness and color
  `static Border`
  `createDoubleBorder(int thickness)`
  Creates a double border with the specified thickness and color
  `static Border`
  `createDoubleBorder(int thickness, int color)`
  Creates a double border with the specified thickness and color
  `static Border`
  `createEmpty()`
  Creates an empty border, this is useful where we don't want a border for a component but want a focus border etc...
  `static Border`
  `createEtchedLowered()`
  Creates a lowered etched border with default colors, highlight is derived from the component and shadow is a plain dark color
  `static Border`
  `createEtchedLowered(int highlight, int shadow)`
  Creates a raised etched border with the given colors
  `static Border`
  `createEtchedRaised()`
  Creates a lowered etched border with default colors, highlight is derived from the component and shadow is a plain dark color
  `static Border`
  `createEtchedRaised(int highlight, int shadow)`
  Creates a raised etched border with the given colors
  `static Border`
  `createGrooveBorder(int thickness)`
  Creates a groove border with the specified thickness and theme colors
  `static Border`
  `createGrooveBorder(int thickness, int color)`
  Creates a groove border with the specified thickness and color
  `static Border`
  `createHorizonalImageBorder(Image left, Image right, Image center)`
  This is an image border that can only grow horizontally
  `static Border`
  `createImageBorder(Image top, Image topLeft, Image background)`
  The given images are tiled appropriately across the matching side of the border, rotated and placed as expected in the four corners.
  `static Border`
  `createImageBorder(Image top, Image bottom, Image left, Image right, Image topLeft, Image topRight, Image bottomLeft, Image bottomRight, Image background)`
  The given top/bottom/left/right images are tiled appropriately across the matching sides of the border and the corners are placed as expected in the four corners.
  `static Border`
  `createImageScaledBorder(Image top, Image bottom, Image left, Image right, Image topLeft, Image topRight, Image bottomLeft, Image bottomRight, Image background)`
  The given top/bottom/left/right images are scaled appropriately across the matching sides of the border and the corners are placed as expected in the four corners.
  `static Border`
  `createImageSplicedBorder(Image img, double topInset, double rightInset, double bottomInset, double leftInset)`
  The given image is spliced into 9 pieces based on the provided top, right, bottom, and left insets, and the resulting sub-images are used to form a 9-piece image border via `com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image)`
  `static Border`
  `createInsetBorder(int thickness)`
  Creates an inset border with the specified thickness and theme colors
  `static Border`
  `createInsetBorder(int thickness, int color)`
  Creates an inset border with the specified thickness and color
  `static Border`
  `createLineBorder(float thickness)`
  Creates a line border that uses the color of the component foreground for drawing
  `static Border`
  `createLineBorder(float thickness, int color)`
  Creates a line border that uses the given color for the component
  `static Border`
  `createLineBorder(int thickness)`
  Creates a line border that uses the color of the component foreground for drawing
  `static Border`
  `createLineBorder(int thickness, int color)`
  Creates a line border that uses the given color for the component
  `static Border`
  `createLineBorder(int thickness, int color, String title)`
  Creates a line border that uses the given color for the component
  `static Border`
  `createLineBorder(int thickness, String title)`
  Creates a line border with the specified title
  `static Border`
  `createOutsetBorder(int thickness)`
  Creates an outset border with the specified thickness and theme colors
  `static Border`
  `createOutsetBorder(int thickness, int color)`
  Creates an outset border with the specified thickness and color
  `Border`
  `createPressedVersion()`
  When applied to buttons borders produce a version that reverses the effects of the border providing a pressed feel
  `static Border`
  `createRidgeBorder(int thickness)`
  Creates a ridge border with the specified thickness and theme colors
  `static Border`
  `createRidgeBorder(int thickness, int color)`
  Creates a ridge border with the specified thickness and color
  `static Border`
  `createRoundBorder(int arcWidth, int arcHeight)`
  Creates a rounded corner border that uses the color of the component foreground for drawing.
  `static Border`
  `createRoundBorder(int arcWidth, int arcHeight, boolean outline)`
  Creates a rounded corner border that uses the color of the component foreground for drawing.
  `static Border`
  `createRoundBorder(int arcWidth, int arcHeight, int color)`
  Creates a rounded border that uses the given color for the component.
  `static Border`
  `createRoundBorder(int arcWidth, int arcHeight, int color, boolean outline)`
  Creates a rounded border that uses the given color for the component.
  `static Border`
  `createUndelineBorder(float thickness)`
  Creates an underline border that uses the color of the component foreground for drawing
  `static Border`
  `createUndelineBorder(int thickness)`
  Creates an underline border that uses the color of the component foreground for drawing
  `static Border`
  `createUnderlineBorder(float thickness)`
  Creates an underline border that uses the color of the component foreground for drawing
  `static Border`
  `createUnderlineBorder(float thickness, int color)`
  Creates an underline border that uses the given color
  `static Border`
  `createUnderlineBorder(int thickness)`
  Creates an underline border that uses the color of the component foreground for drawing
  `static Border`
  `createUnderlineBorder(int thickness, int color)`
  Creates an underline border that uses the given color
  `static Border`
  `createVerticalImageBorder(Image top, Image bottom, Image center)`
  This is an image border that can only grow vertically
  `boolean`
  `equals(Object obj)`
  {Indicates whether some other object is "equal to" this one.
  `Border[]`
  `getCompoundBorders()`
  This method returns the Compound Borders array.
  `static Border`
  `getDefaultBorder()`
  Gets the default border to the given value
  `static Border`
  `getEmpty()`
  Returns an empty border, this is mostly useful for overriding components that have a border by default
  `Border`
  `getFocusedInstance()`
  Returns the focused version of the border if one is installed
  `int`
  `getMinimumHeight()`
  Returns the minimum size required to properly display this border, normally this is 0 but a border might deem itself undisplayable with too small a size e.g.
  `int`
  `getMinimumWidth()`
  Returns the minimum size required to properly display this border, normally this is 0 but a border might deem itself undisplayable with too small a size e.g.
  `Border`
  `getPressedInstance()`
  Returns the pressed version of the border if one is set by the user
  `Object`
  `getProperty(String n)`
  This method is for internal usage only!
  `int`
  `getThickness()`
  This method returns how thick is the border in pixels, notice this doesn't apply to most border types
  `protected Rectangle`
  `getTrackComponent()`
  The track component is an area to which an arrow based border should point at.
  `int`
  `hashCode()`
  Returns a hash code value for the object.
  `boolean`
  `isBackgroundPainter()`
  Returns true if installing this border will override the painting of the component background
  `boolean`
  `isEmptyBorder()`
  Indicates whether this is an empty border
  `boolean`
  `isPaintOuterBorderFirst()`
  Allows toggling the order in which the outer and inner borders are painted for the Outer border type
  `boolean`
  `isRectangleType()`
  Returns true if this border type is a rectangle border.
  `void`
  `lock()`
  This callback indicates that a component pointing at this border is initialized, this method is useful for image borders whose lock methods are implicitly invoked.
  `Border`
  `mirrorBorder()`
  If a border is a horizontal image border it can be mirrored which is useful for an RTL scenario
  `void`
  `paint(Graphics g, Component c)`
  Draws the border for the given component, this method is called before a call to background painting is made.
  `void`
  `paintBorderBackground(Graphics g, Component c)`
  Has effect when the border demands responsibility for background painting normally the painter will perform this work but in this case the border might do it instead.
  `static void`
  `setDefaultBorder(Border border)`
  Sets the default border to the given value
  `void`
  `setFocusedInstance(Border focused)`
  Allows us to define a border that will act as the focused version of this border
  `void`
  `setImageBorderSpecialTile(Image tileTop, Image tileBottom, Image tileLeft, Image tileRight, Component trackComponent)`
  This method is designed mainly for the purpose of creating an arrow that will track a specific component using the image border the tile given would be an arrow like image just like the ones used for the top/bottom/left/right images.
  `void`
  `setImageBorderSpecialTile(Image tileTop, Image tileBottom, Image tileLeft, Image tileRight, Rectangle trackComponent)`
  This method is designed mainly for the purpose of creating an arrow that will track a specific component using the image border the tile given would be an arrow like image just like the ones used for the top/bottom/left/right images.
  `void`
  `setPaintOuterBorderFirst(boolean paintOuterBorderFirst)`
  Allows toggling the order in which the outer and inner borders are painted for the Outer border type
  `void`
  `setPressedInstance(Border pressed)`
  Allows us to define a border that will act as the pressed version of this border
  `void`
  `setThickness(int thickness)`
  This method returns sets the border thickness in pixels, notice this doesn't apply to most border types
  `void`
  `setTrackComponent(Component trackComponent)`
  In the case of an arrow border the track component lets us track the position to which the border is pointing
  `void`
  `setTrackComponent(Rectangle trackComponent)`
  In the case of an arrow border the track component lets us track the position to which the border is pointing
  `void`
  `unlock()`
  This callback indicates that a component pointing at this border is now deinitilized This method may be invoked multiple times.

  ### Methods inherited from class Object

  `clone, getClass, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  `final Class`
  `getClass()`
  Returns the runtime class of an object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes current thread to wait until another thread invokes the method or the method for this object.
  `final void`
  `wait(long timeout)`
  Causes current thread to wait until either another thread invokes the method or the method for this object, or a specified amount of time has elapsed.
  `final void`
  `wait(long timeout, int nanos)`
  Causes current thread to wait until another thread invokes the method or the method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.

- ## Constructor Details

  - ### Border

    protected Border()
    Prevents usage of new operator, use the factory methods in the class or subclass to create new border types.

- ## Method Details

  - ### getEmpty

    public static Border getEmpty()

    Returns an empty border, this is mostly useful for overriding components that have a border by default

    ###### Returns

    a border than draws nothing

    ###### Deprecated

    use createEmpty instead

  - ### createEmpty

    public static Border createEmpty()

    Creates an empty border, this is useful where we don't want a border for a component but want a focus border etc...

    ###### Returns

    a border than draws nothing

  - ### createImageBorder

    public static Border createImageBorder(Image top, Image bottom, Image left, Image right, Image topLeft, Image topRight, Image bottomLeft, Image bottomRight, Image background)

    The given top/bottom/left/right images are tiled appropriately across the matching sides of the border and the corners are placed as expected in the four corners. The background image is optional and it will be tiled in the background if necessary.

    By default this border does not override background unless a background image is specified

    ###### Parameters

    - `top`: the image of the top line

    - `bottom`: the image of the bottom line

    - `left`: the image of the left line

    - `right`: the image of the right line

    - `topLeft`: the image of the top left corner

    - `topRight`: the image of the top right corner

    - `bottomLeft`: the image of the bottom left corner

    - `bottomRight`: the image of the bottom right corner

    - `background`: the image of the background (optional)

    ###### Returns

    new border instance

  - ### createImageSplicedBorder

    public static Border createImageSplicedBorder(Image img, double topInset, double rightInset, double bottomInset, double leftInset)

    The given image is spliced into 9 pieces based on the provided top, right, bottom, and left insets, and the resulting sub-images are used to form a 9-piece image border via `com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image, com.codename1.ui.Image)`

    Insets are all given in a (u,v) coordinate space where (0,0) is the top-left corner of the image, and (1.0, 1.0) is the bottom-right corner of the image.

    ###### Parameters

    - `img`: The image to be used as a background image and spliced.

    - `topInset`

    - `rightInset`

    - `bottomInset`

    - `leftInset`

    ###### Returns

    A 9-piece image border.

  - ### createImageScaledBorder

    public static Border createImageScaledBorder(Image top, Image bottom, Image left, Image right, Image topLeft, Image topRight, Image bottomLeft, Image bottomRight, Image background)

    The given top/bottom/left/right images are scaled appropriately across the matching sides of the border and the corners are placed as expected in the four corners. The background image is optional and it will be tiled in the background if necessary.

    By default this border does not override background unless a background image is specified

    ###### Parameters

    - `top`: the image of the top line

    - `bottom`: the image of the bottom line

    - `left`: the image of the left line

    - `right`: the image of the right line

    - `topLeft`: the image of the top left corner

    - `topRight`: the image of the top right corner

    - `bottomLeft`: the image of the bottom left corner

    - `bottomRight`: the image of the bottom right corner

    - `background`: the image of the background (optional)

    ###### Returns

    new border instance

  - ### createHorizonalImageBorder

    public static Border createHorizonalImageBorder(Image left, Image right, Image center)

    This is an image border that can only grow horizontally

    ###### Parameters

    - `left`: the image of the left side

    - `right`: the image of the right side

    - `center`: the image of the center

    ###### Returns

    new border instance

  - ### createVerticalImageBorder

    public static Border createVerticalImageBorder(Image top, Image bottom, Image center)

    This is an image border that can only grow vertically

    ###### Parameters

    - `top`: the image of the top

    - `bottom`: the image of the bottom

    - `center`: the image of the center

    ###### Returns

    new border instance

  - ### createImageBorder

    public static Border createImageBorder(Image top, Image topLeft, Image background)

    The given images are tiled appropriately across the matching side of the border, rotated and placed as expected in the four corners. The background image is optional and it will be tiled in the background if necessary.

    By default this border does not override background unless a background image is specified.

    Notice that this version of the method is potentially much more efficient since images are rotated internally and this might save quite a bit of memory!

    The top and topLeft images must be square! The width and height of these images must be equal otherwise rotation won't work as you expect.

    ###### Parameters

    - `top`: the image of the top line

    - `topLeft`: the image of the top left corner

    - `background`: the image of the background (optional)

    ###### Returns

    new border instance

  - ### createLineBorder

    public static Border createLineBorder(int thickness)

    Creates a line border that uses the color of the component foreground for drawing

    ###### Parameters

    - `thickness`: thickness of the border in pixels

    ###### Returns

    new border instance

  - ### createLineBorder

    public static Border createLineBorder(float thickness)

    Creates a line border that uses the color of the component foreground for drawing

    ###### Parameters

    - `thickness`: thickness of the border in millimeters

    ###### Returns

    new border instance

  - ### createUndelineBorder

    public static Border createUndelineBorder(int thickness)

    Creates an underline border that uses the color of the component foreground for drawing

    ###### Parameters

    - `thickness`: thickness of the border in pixels

    ###### Returns

    new border instance

    ###### Deprecated

    due to a spelling mistake. Use `thickness)`

  - ### createUnderlineBorder

    public static Border createUnderlineBorder(int thickness)

    Creates an underline border that uses the color of the component foreground for drawing

    ###### Parameters

    - `thickness`: thickness of the border in pixels

    ###### Returns

    new border instance

  - ### createUndelineBorder

    public static Border createUndelineBorder(float thickness)

    Creates an underline border that uses the color of the component foreground for drawing

    ###### Parameters

    - `thickness`: thickness of the border in millimeters

    ###### Returns

    new border instance

    ###### Deprecated

    due to a spelling mistake. Use `thickness)`

  - ### createUnderlineBorder

    public static Border createUnderlineBorder(float thickness)

    Creates an underline border that uses the color of the component foreground for drawing

    ###### Parameters

    - `thickness`: thickness of the border in millimeters

    ###### Returns

    new border instance

  - ### createUnderlineBorder

    public static Border createUnderlineBorder(int thickness, int color)

    Creates an underline border that uses the given color

    ###### Parameters

    - `thickness`: thickness of the border in pixels

    - `color`: the color

    ###### Returns

    new border instance

  - ### createUnderlineBorder

    public static Border createUnderlineBorder(float thickness, int color)

    Creates an underline border that uses the given color

    ###### Parameters

    - `thickness`: thickness of the border in millimeters

    - `color`: the color

    ###### Returns

    new border instance

  - ### createDottedBorder

    public static Border createDottedBorder(int thickness, int color)

    Creates a dotted border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    - `color`: The border color

    ###### Returns

    The border

  - ### createDashedBorder

    public static Border createDashedBorder(int thickness, int color)

    Creates a dashed border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    - `color`: The border color

    ###### Returns

    The border

  - ### createDoubleBorder

    public static Border createDoubleBorder(int thickness, int color)

    Creates a double border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    - `color`: The border color

    ###### Returns

    The border

  - ### createDottedBorder

    public static Border createDottedBorder(int thickness)

    Creates a dotted border with the specified thickness and the theme colors

    ###### Parameters

    - `thickness`: The border thickness in pixels

    ###### Returns

    The border

  - ### createDashedBorder

    public static Border createDashedBorder(int thickness)

    Creates a dashed border with the specified thickness and the theme colors

    ###### Parameters

    - `thickness`: The border thickness in pixels

    ###### Returns

    The border

  - ### createDoubleBorder

    public static Border createDoubleBorder(int thickness)

    Creates a double border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    ###### Returns

    The border

  - ### createOutsetBorder

    public static Border createOutsetBorder(int thickness)

    Creates an outset border with the specified thickness and theme colors

    ###### Parameters

    - `thickness`: The border thickness in pixels

    ###### Returns

    The border

  - ### createOutsetBorder

    public static Border createOutsetBorder(int thickness, int color)

    Creates an outset border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    - `color`: The border color

    ###### Returns

    The border

  - ### createInsetBorder

    public static Border createInsetBorder(int thickness)

    Creates an inset border with the specified thickness and theme colors

    ###### Parameters

    - `thickness`: The border thickness in pixels

    ###### Returns

    The border

  - ### createInsetBorder

    public static Border createInsetBorder(int thickness, int color)

    Creates an inset border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    - `color`: The border color

    ###### Returns

    The border

  - ### createGrooveBorder

    public static Border createGrooveBorder(int thickness)

    Creates a groove border with the specified thickness and theme colors

    ###### Parameters

    - `thickness`: The border thickness in pixels

    ###### Returns

    The border

  - ### createGrooveBorder

    public static Border createGrooveBorder(int thickness, int color)

    Creates a groove border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    - `color`: The border color

    ###### Returns

    The border

  - ### createRidgeBorder

    public static Border createRidgeBorder(int thickness)

    Creates a ridge border with the specified thickness and theme colors

    ###### Parameters

    - `thickness`: The border thickness in pixels

    ###### Returns

    The border

  - ### createRidgeBorder

    public static Border createRidgeBorder(int thickness, int color)

    Creates a ridge border with the specified thickness and color

    ###### Parameters

    - `thickness`: The border thickness in pixels

    - `color`: The border color

    ###### Returns

    The border

  - ### createLineBorder

    public static Border createLineBorder(int thickness, String title)

    Creates a line border with the specified title

    ###### Parameters

    - `thickness`: thickness of the border in pixels

    - `title`: The borders title

    ###### Returns

    new border instance

  - ### createLineBorder

    public static Border createLineBorder(int thickness, int color, String title)

    Creates a line border that uses the given color for the component

    ###### Parameters

    - `thickness`: thickness of the border in pixels

    - `color`: the color for the border

    - `title`: The borders title

    ###### Returns

    new border instance

  - ### createLineBorder

    public static Border createLineBorder(int thickness, int color)

    Creates a line border that uses the given color for the component

    ###### Parameters

    - `thickness`: thickness of the border in pixels

    - `color`: the color for the border

    ###### Returns

    new border instance

  - ### createLineBorder

    public static Border createLineBorder(float thickness, int color)

    Creates a line border that uses the given color for the component

    ###### Parameters

    - `thickness`: thickness of the border in millimeters

    - `color`: the color for the border

    ###### Returns

    new border instance

  - ### createRoundBorder

    public static Border createRoundBorder(int arcWidth, int arcHeight)

    Creates a rounded corner border that uses the color of the component foreground for drawing. Due to technical issues (lack of shaped clipping) performance and memory overhead of round borders can be low if used with either a bgImage or translucency!

    This border overrides any painter used on the component and would ignor such a painter.

    ###### Parameters

    - `arcWidth`: the horizontal diameter of the arc at the four corners.

    - `arcHeight`: the vertical diameter of the arc at the four corners.

    ###### Returns

    new border instance

    ###### Deprecated

  - ### createRoundBorder

    public static Border createRoundBorder(int arcWidth, int arcHeight, boolean outline)

    Creates a rounded corner border that uses the color of the component foreground for drawing. Due to technical issues (lack of shaped clipping) performance and memory overhead of round borders can be low if used with either a bgImage or translucency!

    This border overrides any painter used on the component and would ignor such a painter.

    ###### Parameters

    - `arcWidth`: the horizontal diameter of the arc at the four corners.

    - `arcHeight`: the vertical diameter of the arc at the four corners.

    - `outline`: whether the round rect border outline should be drawn

    ###### Returns

    new border instance

    ###### Deprecated

  - ### createRoundBorder

    public static Border createRoundBorder(int arcWidth, int arcHeight, int color)

    Creates a rounded border that uses the given color for the component. Due to technical issues (lack of shaped clipping) performance and memory overhead of round borders can be low if used with either a bgImage or translucency!

    This border overrides any painter used on the component and would ignor such a painter.

    ###### Parameters

    - `arcWidth`: the horizontal diameter of the arc at the four corners.

    - `arcHeight`: the vertical diameter of the arc at the four corners.

    - `color`: the color for the border

    ###### Returns

    new border instance

    ###### Deprecated

  - ### createRoundBorder

    public static Border createRoundBorder(int arcWidth, int arcHeight, int color, boolean outline)

    Creates a rounded border that uses the given color for the component. Due to technical issues (lack of shaped clipping) performance and memory overhead of round borders can be low if used with either a bgImage or translucency!

    This border overrides any painter used on the component and would ignor such a painter.

    ###### Parameters

    - `arcWidth`: the horizontal diameter of the arc at the four corners.

    - `arcHeight`: the vertical diameter of the arc at the four corners.

    - `color`: the color for the border

    - `outline`: whether the round rect border outline should be drawn

    ###### Returns

    new border instance

    ###### Deprecated

  - ### createEtchedLowered

    public static Border createEtchedLowered()

    Creates a lowered etched border with default colors, highlight is derived from the component and shadow is a plain dark color

    ###### Returns

    new border instance

  - ### createEtchedLowered

    public static Border createEtchedLowered(int highlight, int shadow)

    Creates a raised etched border with the given colors

    ###### Parameters

    - `highlight`: color RGB value

    - `shadow`: color RGB value

    ###### Returns

    new border instance

  - ### createEtchedRaised

    public static Border createEtchedRaised()

    Creates a lowered etched border with default colors, highlight is derived from the component and shadow is a plain dark color

    ###### Returns

    new border instance

  - ### createEtchedRaised

    public static Border createEtchedRaised(int highlight, int shadow)

    Creates a raised etched border with the given colors

    ###### Parameters

    - `highlight`: color RGB value

    - `shadow`: color RGB value

    ###### Returns

    new border instance

  - ### createCompoundBorder

    public static Border createCompoundBorder(Border top, Border bottom, Border left, Border right)

    Creates a border that is comprised of multiple border types so one border type can be used on top while another one can be used at the bottom. Notice that this doesn't work well with all border types (e.g. image borders)

    ###### Parameters

    - `top`: the top border

    - `bottom`: the bottom border

    - `left`: the left border

    - `right`: the right border

    ###### Returns

    a compound border

  - ### createBevelLowered

    public static Border createBevelLowered()

    Creates a lowered bevel border with default colors, highlight is derived from the component and shadow is a plain dark color

    ###### Returns

    new border instance

  - ### createBevelLowered

    public static Border createBevelLowered(int highlightOuter, int highlightInner, int shadowOuter, int shadowInner)

    Creates a raised bevel border with the given colors

    ###### Parameters

    - `highlightOuter`: RGB of the outer edge of the highlight area

    - `highlightInner`: RGB of the inner edge of the highlight area

    - `shadowOuter`: RGB of the outer edge of the shadow area

    - `shadowInner`: RGB of the inner edge of the shadow area

    ###### Returns

    new border instance

  - ### createBevelRaised

    public static Border createBevelRaised()

    Creates a lowered bevel border with default colors, highlight is derived from the component and shadow is a plain dark color

    ###### Returns

    new border instance

  - ### createBevelRaised

    public static Border createBevelRaised(int highlightOuter, int highlightInner, int shadowOuter, int shadowInner)

    Creates a raised bevel border with the given colors

    ###### Parameters

    - `highlightOuter`: RGB of the outer edge of the highlight area

    - `highlightInner`: RGB of the inner edge of the highlight area

    - `shadowOuter`: RGB of the outer edge of the shadow area

    - `shadowInner`: RGB of the inner edge of the shadow area

    ###### Returns

    new border instance

  - ### getDefaultBorder

    public static Border getDefaultBorder()

    Gets the default border to the given value

    ###### Returns

    the default border

  - ### setDefaultBorder

    public static void setDefaultBorder(Border border)

    Sets the default border to the given value

    ###### Parameters

    - `border`: new border value

  - ### mirrorBorder

    public Border mirrorBorder()

    If a border is a horizontal image border it can be mirrored which is useful for an RTL scenario

    ###### Returns

    the current border or a mirrored instance

  - ### setImageBorderSpecialTile

    public void setImageBorderSpecialTile(Image tileTop, Image tileBottom, Image tileLeft, Image tileRight, Component trackComponent)

    This method is designed mainly for the purpose of creating an arrow that will track a specific component using the image border the tile given would be an arrow like image just like the ones used for the top/bottom/left/right images. This image would be positioned so it points at the center of the track component

    ###### Parameters

    - `tileTop`: an image that will replace one of the tiles on the top if the track component is there

    - `tileBottom`: an image that will replace one of the tiles on the bottom if the track component is there

    - `tileLeft`: an image that will replace one of the tiles on the left if the track component is there

    - `tileRight`: an image that will replace one of the tiles on the right if the track component is there

    - `trackComponent`: the component that will be tracked for the positioning of the tile

  - ### getTrackComponent

    protected Rectangle getTrackComponent()

    The track component is an area to which an arrow based border should point at. It's assumed to be outside of the border region in absolute screen coordinates.

    ###### Returns

    the rectangle to point at or null if this isn't an arrow border

  - ### setTrackComponent

    public void setTrackComponent(Component trackComponent)

    In the case of an arrow border the track component lets us track the position to which the border is pointing

    ###### Parameters

    - `trackComponent`: the track component

  - ### setTrackComponent

    public void setTrackComponent(Rectangle trackComponent)

    In the case of an arrow border the track component lets us track the position to which the border is pointing

    ###### Parameters

    - `trackComponent`: the track component

  - ### setImageBorderSpecialTile

    public void setImageBorderSpecialTile(Image tileTop, Image tileBottom, Image tileLeft, Image tileRight, Rectangle trackComponent)

    This method is designed mainly for the purpose of creating an arrow that will track a specific component using the image border the tile given would be an arrow like image just like the ones used for the top/bottom/left/right images. This image would be positioned so it points at the center of the track component

    ###### Parameters

    - `tileTop`: an image that will replace one of the tiles on the top if the track component is there

    - `tileBottom`: an image that will replace one of the tiles on the bottom if the track component is there

    - `tileLeft`: an image that will replace one of the tiles on the left if the track component is there

    - `tileRight`: an image that will replace one of the tiles on the right if the track component is there

    - `trackComponent`: the component that will be tracked for the positioning of the tile

  - ### clearImageBorderSpecialTile

    public void clearImageBorderSpecialTile()
    Cleans the tile tracking state allowing the garbage collector to pick up the component and the image data

  - ### addOuterBorder

    public void addOuterBorder(Border outer)

    Ads a border that wraps this border

    ###### Parameters

    - `outer`: The outer border

  - ### getMinimumHeight

    public int getMinimumHeight()

    Returns the minimum size required to properly display this border, normally this is 0 but a border might deem itself undisplayable with too small a size e.g. for the case of an image border the minimum height would be top + bottom and the minimum width would be left+right

    ###### Returns

    0 if not applicable or a dimension if it is.

  - ### getMinimumWidth

    public int getMinimumWidth()

    Returns the minimum size required to properly display this border, normally this is 0 but a border might deem itself undisplayable with too small a size e.g. for the case of an image border the minimum height would be top + bottom and the minimum width would be left+right

    ###### Returns

    0 if not applicable or a dimension if it is.

  - ### isEmptyBorder

    public boolean isEmptyBorder()

    Indicates whether this is an empty border

    ###### Returns

    true if this is an empty border

  - ### equals

    public boolean equals(Object obj)
    {Indicates whether some other object is "equal to" this one. The equals method implements an equivalence relation: It is reflexive: for any reference value x, x.equals(x) should return true. It is symmetric: for any reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true. It is transitive: for any reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true. It is consistent: for any reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the object is modified. For any non-null reference value x, x.equals(null) should return false. The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).}
    Overrides:
      `equals` in class `Object`

  - ### hashCode

    public int hashCode()
    Returns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided by java.util.Hashtable. The general contract of hashCode is: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hashtables. As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)
    Overrides:
      `hashCode` in class `Object`

  - ### isBackgroundPainter

    public boolean isBackgroundPainter()

    Returns true if installing this border will override the painting of the component background

    ###### Returns

    true if this border replaces the painter

  - ### isRectangleType

    public boolean isRectangleType()

    Returns true if this border type is a rectangle border.

    ###### Returns

    true if this border is rectangle

  - ### getFocusedInstance

    public Border getFocusedInstance()

    Returns the focused version of the border if one is installed

    ###### Returns

    a focused version of this border if one exists

    ###### Deprecated

    use the getSelectedStyle() method in the component class

  - ### setFocusedInstance

    public void setFocusedInstance(Border focused)

    Allows us to define a border that will act as the focused version of this border

    ###### Parameters

    - `focused`: a border that will be returned by the focused version method

    ###### Deprecated

    use the getSelectedStyle() method in the component class

  - ### getPressedInstance

    public Border getPressedInstance()

    Returns the pressed version of the border if one is set by the user

    ###### Returns

    the pressed instance of this border

  - ### setPressedInstance

    public void setPressedInstance(Border pressed)

    Allows us to define a border that will act as the pressed version of this border

    ###### Parameters

    - `pressed`: a border that will be returned by the pressed version method

  - ### createPressedVersion

    public Border createPressedVersion()

    When applied to buttons borders produce a version that reverses the effects of the border providing a pressed feel

    ###### Returns

    a border that will make the button feel pressed

  - ### paintBorderBackground

    public void paintBorderBackground(Graphics g, Component c)

    Has effect when the border demands responsibility for background painting normally the painter will perform this work but in this case the border might do it instead.

    ###### Parameters

    - `g`: graphics context to draw onto

    - `c`: component whose border should be drawn

  - ### paint

    public void paint(Graphics g, Component c)

    Draws the border for the given component, this method is called before a call to background painting is made.

    ###### Parameters

    - `g`: graphics context to draw onto

    - `c`: component whose border should be drawn

  - ### getThickness

    public int getThickness()

    This method returns how thick is the border in pixels, notice this doesn't apply to most border types

    ###### Returns

    the Border thickness

  - ### setThickness

    public void setThickness(int thickness)

    This method returns sets the border thickness in pixels, notice this doesn't apply to most border types

    ###### Parameters

    - `thickness`: the Border thickness

  - ### isPaintOuterBorderFirst

    public boolean isPaintOuterBorderFirst()

    Allows toggling the order in which the outer and inner borders are painted for the Outer border type

    ###### Returns

    whether the outside border should be painter first

  - ### setPaintOuterBorderFirst

    public void setPaintOuterBorderFirst(boolean paintOuterBorderFirst)

    Allows toggling the order in which the outer and inner borders are painted for the Outer border type

    ###### Parameters

    - `paintOuterBorderFirst`: whether the outside border should be painter first

  - ### getCompoundBorders

    public Border[] getCompoundBorders()

    This method returns the Compound Borders array. The array size is 4 and the borders arranged as follows : Border[] borders = getCompoundBorders(); `Border top = borders[Component.TOP];` `Border bottom = borders[Component.BOTTOM];` `Border left = borders[Component.LEFT];` `Border right = borders[Component.RIGHT];`

    ###### Returns

    the borders array or null if this is not a Compound Border

  - ### lock

    public void lock()
    This callback indicates that a component pointing at this border is initialized, this method is useful for image borders whose lock methods are implicitly invoked. This method may be invoked multiple times.

  - ### unlock

    public void unlock()
    This callback indicates that a component pointing at this border is now deinitilized This method may be invoked multiple times.

  - ### getProperty

    public Object getProperty(String n)
    This method is for internal usage only!