Module java.desktop
Package javax.swing.border

# Interface Border

All Known Implementing Classes:
  `AbstractBorder`, `BasicBorders.ButtonBorder`, `BasicBorders.FieldBorder`, `BasicBorders.MarginBorder`, `BasicBorders.MenuBarBorder`, `BasicBorders.RadioButtonBorder`, `BasicBorders.RolloverButtonBorder`, `BasicBorders.SplitPaneBorder`, `BasicBorders.ToggleButtonBorder`, `BevelBorder`, `BorderUIResource`, `BorderUIResource.BevelBorderUIResource`, `BorderUIResource.CompoundBorderUIResource`, `BorderUIResource.EmptyBorderUIResource`, `BorderUIResource.EtchedBorderUIResource`, `BorderUIResource.LineBorderUIResource`, `BorderUIResource.MatteBorderUIResource`, `BorderUIResource.TitledBorderUIResource`, `CompoundBorder`, `EmptyBorder`, `EtchedBorder`, `LineBorder`, `MatteBorder`, `MetalBorders.ButtonBorder`, `MetalBorders.Flush3DBorder`, `MetalBorders.InternalFrameBorder`, `MetalBorders.MenuBarBorder`, `MetalBorders.MenuItemBorder`, `MetalBorders.OptionDialogBorder`, `MetalBorders.PaletteBorder`, `MetalBorders.PopupMenuBorder`, `MetalBorders.RolloverButtonBorder`, `MetalBorders.ScrollPaneBorder`, `MetalBorders.TableHeaderBorder`, `MetalBorders.TextFieldBorder`, `MetalBorders.ToggleButtonBorder`, `MetalBorders.ToolBarBorder`, `SoftBevelBorder`, `StrokeBorder`, `TitledBorder`

public interface Border
Interface describing an object capable of rendering a border around the edges of a swing component. For examples of using borders see How to Use Borders, a section in The Java Tutorial.

In the Swing component set, borders supercede Insets as the mechanism for creating a (decorated or plain) area around the edge of a component.

Usage Notes:

- Use EmptyBorder to create a plain border (this mechanism replaces its predecessor, `setInsets`).
- Use CompoundBorder to nest multiple border objects, creating a single, combined border.
- Border instances are designed to be shared. Rather than creating a new border object using one of border classes, use the BorderFactory methods, which produces a shared instance of the common border types.
- Additional border styles include BevelBorder, SoftBevelBorder, EtchedBorder, LineBorder, TitledBorder, and MatteBorder.
- To create a new border class, subclass AbstractBorder.

See Also:
  - `BorderFactory`
  - `EmptyBorder`
  - `CompoundBorder`

## Method Summary

Modifier and Type
Method
Description
`Insets`
`getBorderInsets(Component c)`
Returns the insets of the border.
`boolean`
`isBorderOpaque()`
Returns whether or not the border is opaque.
`void`
`paintBorder(Component c, Graphics g, int x, int y, int width, int height)`
Paints the border for the specified component with the specified position and size.

## Method Details

### paintBorder

void paintBorder(Component c, Graphics g, int x, int y, int width, int height)
Paints the border for the specified component with the specified position and size.

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

Insets getBorderInsets(Component c)
Returns the insets of the border.

Parameters:
  `c` - the component for which this border insets value applies
Returns:
  an `Insets` object containing the insets from top, left, bottom and right of this `Border`

### isBorderOpaque

boolean isBorderOpaque()
Returns whether or not the border is opaque. If the border is opaque, it is responsible for filling in it's own background when painting.

Returns:
  true if this `Border` is opaque