# Class AbstractBorder

java.lang.Object
javax.swing.border.AbstractBorder

All Implemented Interfaces:
  `Serializable, Border`

Direct Known Subclasses:
  `BasicBorders.ButtonBorder, BasicBorders.FieldBorder, BasicBorders.MarginBorder, BasicBorders.MenuBarBorder, BevelBorder, CompoundBorder, EmptyBorder, EtchedBorder, LineBorder, MetalBorders.ButtonBorder, MetalBorders.Flush3DBorder, MetalBorders.InternalFrameBorder, MetalBorders.MenuBarBorder, MetalBorders.MenuItemBorder, MetalBorders.OptionDialogBorder, MetalBorders.PaletteBorder, MetalBorders.PopupMenuBorder, MetalBorders.ScrollPaneBorder, MetalBorders.TableHeaderBorder, MetalBorders.ToolBarBorder, StrokeBorder, TitledBorder`

public abstract class AbstractBorder extends Object implements Border, Serializable
A class that implements an empty border with no size. This provides a convenient base class from which other border classes can be easily derived.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the `java.beans` package. Please see `XMLEncoder`.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AbstractBorder()`
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getBaseline(Component c, int width, int height)`
  Returns the baseline.
  `Component.BaselineResizeBehavior`
  `getBaselineResizeBehavior(Component c)`
  Returns an enum indicating how the baseline of a component changes as the size changes.
  `Insets`
  `getBorderInsets(Component c)`
  This default implementation returns a new `Insets` object that is initialized by the `getBorderInsets(Component,Insets)` method.
  `Insets`
  `getBorderInsets(Component c, Insets insets)`
  Reinitializes the insets parameter with this Border's current Insets.
  `Rectangle`
  `getInteriorRectangle(Component c, int x, int y, int width, int height)`
  This convenience method calls the static method.
  `static Rectangle`
  `getInteriorRectangle(Component c, Border b, int x, int y, int width, int height)`
  Returns a rectangle using the arguments minus the insets of the border.
  `boolean`
  `isBorderOpaque()`
  This default implementation returns false.
  `void`
  `paintBorder(Component c, Graphics g, int x, int y, int width, int height)`
  This default implementation does no painting.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this 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 the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### AbstractBorder

    protected AbstractBorder()
    Constructor for subclasses to call.

- ## Method Details

  - ### paintBorder

    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height)
    This default implementation does no painting.
    Specified by:
      `paintBorder` in interface `Border`
    Parameters:
      `c` - the component for which this border is being painted
      `g` - the paint graphics
      `x` - the x position of the painted border
      `y` - the y position of the painted border
      `width` - the width of the painted border
      `height` - the height of the painted border

  - ### getBorderInsets

    public Insets getBorderInsets(Component c)
    This default implementation returns a new `Insets` object that is initialized by the `getBorderInsets(Component,Insets)` method. By default the `top`, `left`, `bottom`, and `right` fields are set to `0`.
    Specified by:
      `getBorderInsets` in interface `Border`
    Parameters:
      `c` - the component for which this border insets value applies
    Returns:
      a new `Insets` object

  - ### getBorderInsets

    public Insets getBorderInsets(Component c, Insets insets)
    Reinitializes the insets parameter with this Border's current Insets.
    Parameters:
      `c` - the component for which this border insets value applies
      `insets` - the object to be reinitialized
    Returns:
      the `insets` object
    Throws:
      `NullPointerException` - if the specified `insets` is `null`

  - ### isBorderOpaque

    public boolean isBorderOpaque()
    This default implementation returns false.
    Specified by:
      `isBorderOpaque` in interface `Border`
    Returns:
      false

  - ### getInteriorRectangle

    public Rectangle getInteriorRectangle(Component c, int x, int y, int width, int height)
    This convenience method calls the static method.
    Parameters:
      `c` - the component for which this border is being computed
      `x` - the x position of the border
      `y` - the y position of the border
      `width` - the width of the border
      `height` - the height of the border
    Returns:
      a `Rectangle` containing the interior coordinates

  - ### getInteriorRectangle

    public static Rectangle getInteriorRectangle(Component c, Border b, int x, int y, int width, int height)
    Returns a rectangle using the arguments minus the insets of the border. This is useful for determining the area that components should draw in that will not intersect the border.
    Parameters:
      `c` - the component for which this border is being computed
      `b` - the `Border` object
      `x` - the x position of the border
      `y` - the y position of the border
      `width` - the width of the border
      `height` - the height of the border
    Returns:
      a `Rectangle` containing the interior coordinates

  - ### getBaseline

    public int getBaseline(Component c, int width, int height)
    Returns the baseline. A return value less than 0 indicates the border does not have a reasonable baseline.

    The default implementation returns -1. Subclasses that support baseline should override appropriately. If a value >= 0 is returned, then the component has a valid baseline for any size >= the minimum size and `getBaselineResizeBehavior` can be used to determine how the baseline changes with size.

    Parameters:
      `c` - `Component` baseline is being requested for
      `width` - the width to get the baseline for
      `height` - the height to get the baseline for
    Returns:
      the baseline or < 0 indicating there is no reasonable baseline
    Throws:
      `IllegalArgumentException` - if width or height is < 0
    Since:
      1.6
    See Also:
      - `Component.getBaseline(int,int)`
      - `Component.getBaselineResizeBehavior()`

  - ### getBaselineResizeBehavior

    public Component.BaselineResizeBehavior getBaselineResizeBehavior(Component c)
    Returns an enum indicating how the baseline of a component changes as the size changes. This method is primarily meant for layout managers and GUI builders.

    The default implementation returns `BaselineResizeBehavior.OTHER`, subclasses that support baseline should override appropriately. Subclasses should never return `null`; if the baseline can not be calculated return `BaselineResizeBehavior.OTHER`. Callers should first ask for the baseline using `getBaseline` and if a value >= 0 is returned use this method. It is acceptable for this method to return a value other than `BaselineResizeBehavior.OTHER` even if `getBaseline` returns a value less than 0.

    Parameters:
      `c` - `Component` to return baseline resize behavior for
    Returns:
      an enum indicating how the baseline changes as the border is resized
    Throws:
      `NullPointerException` - if `Component` is `null`
    Since:
      1.6
    See Also:
      - `Component.getBaseline(int,int)`
      - `Component.getBaselineResizeBehavior()`