# Class BorderStroke

java.lang.Object
javafx.scene.layout.BorderStroke

All Implemented Interfaces:
  `Interpolatable<BorderStroke>`

public final class BorderStroke extends Object implements Interpolatable<BorderStroke>
Defines the stroke to use on a `Border` for styling a `Region`. The stroke is a vector-based rendering that outlines the border area. It can be inset (or outset) from the `Region`'s edge, and the values of the stroke are taken into account when computing the `Region`'s insets (for defining the content area). The stroke visuals are not used when any `BorderImage`s are in use.

When applied to a `Region` with a defined shape, the border width and stroking information for the `top` is used, while the other attributes are ignored.

Since:
  JavaFX 8.0

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final BorderWidths`
  `DEFAULT_WIDTHS`
  The default Insets to be used with a BorderStroke that does not otherwise define any.
  `static final BorderWidths`
  `MEDIUM`
  The default insets when "medium" is specified
  `static final BorderWidths`
  `THICK`
  The default insets when "thick" is specified
  `static final BorderWidths`
  `THIN`
  The default insets when "thin" is specified.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BorderStroke(Paint stroke, BorderStrokeStyle style, CornerRadii radii, BorderWidths widths)`
  Creates a new `BorderStroke`.
  `BorderStroke(Paint stroke, BorderStrokeStyle style, CornerRadii radii, BorderWidths widths, Insets insets)`
  Creates a new `BorderStroke`.
  `BorderStroke(Paint topStroke, Paint rightStroke, Paint bottomStroke, Paint leftStroke, BorderStrokeStyle topStyle, BorderStrokeStyle rightStyle, BorderStrokeStyle bottomStyle, BorderStrokeStyle leftStyle, CornerRadii radii, BorderWidths widths, Insets insets)`
  Creates a new `BorderStroke`, specifying all construction parameters.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final Paint`
  `getBottomStroke()`
  Defines the fill of bottom side of this border.
  `final BorderStrokeStyle`
  `getBottomStyle()`
  Defines the style of bottom side of this border.
  `final Insets`
  `getInsets()`
  Defines the insets of each side of the `BorderStroke`.
  `final Paint`
  `getLeftStroke()`
  Defines the fill of left side of this border.
  `final BorderStrokeStyle`
  `getLeftStyle()`
  Defines the style of left side of this border.
  `final CornerRadii`
  `getRadii()`
  Defines the radii for each corner of this `BorderStroke`.
  `final Paint`
  `getRightStroke()`
  Defines the fill of right side of this border.
  `final BorderStrokeStyle`
  `getRightStyle()`
  Defines the style of right side of this border.
  `final Paint`
  `getTopStroke()`
  Defines the fill of top side of this border.
  `final BorderStrokeStyle`
  `getTopStyle()`
  Defines the style of top side of this border.
  `final BorderWidths`
  `getWidths()`
  Defines the thickness of each side of the `BorderStroke`.
  `BorderStroke`
  `interpolate(BorderStroke endValue, double t)`
  Returns an intermediate value between the value of this `Interpolatable` and the specified `endValue` using the linear interpolation factor `t`, ranging from 0 (inclusive) to 1 (inclusive).
  `final boolean`
  `isStrokeUniform()`
  Checks if the stroke of this region is uniform.

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### THIN

    public static final BorderWidths THIN
    The default insets when "thin" is specified.

  - ### MEDIUM

    public static final BorderWidths MEDIUM
    The default insets when "medium" is specified

  - ### THICK

    public static final BorderWidths THICK
    The default insets when "thick" is specified

  - ### DEFAULT_WIDTHS

    public static final BorderWidths DEFAULT_WIDTHS
    The default Insets to be used with a BorderStroke that does not otherwise define any.

- ## Constructor Details

  - ### BorderStroke

    public BorderStroke(Paint stroke, BorderStrokeStyle style, CornerRadii radii, BorderWidths widths)
    Creates a new `BorderStroke`.
    Parameters:
      `stroke` - The stroke to use for all sides. If `null`, defaults to `Color.BLACK`.
      `style` - The style to use for all sides. If `null`, defaults to `BorderStrokeStyle.NONE`.
      `radii` - The radii to use. If `null`, defaults to `CornerRadii.EMPTY`.
      `widths` - The widths to use. If `null`, defaults to `DEFAULT_WIDTHS`.

  - ### BorderStroke

    public BorderStroke(Paint stroke, BorderStrokeStyle style, CornerRadii radii, BorderWidths widths, Insets insets)
    Creates a new `BorderStroke`.
    Parameters:
      `stroke` - The stroke to use for all sides. If `null`, defaults to `Color.BLACK`.
      `style` - The style to use for all sides. If `null`, defaults to `BorderStrokeStyle.NONE`.
      `radii` - The radii to use. If `null`, defaults to `CornerRadii.EMPTY`.
      `widths` - The widths to use. If `null`, defaults to `DEFAULT_WIDTHS`.
      `insets` - The insets indicating where to draw the border relative to the region edges. If `null`, defaults to `Insets.EMPTY`.

  - ### BorderStroke

    public BorderStroke(Paint topStroke, Paint rightStroke, Paint bottomStroke, Paint leftStroke, BorderStrokeStyle topStyle, BorderStrokeStyle rightStyle, BorderStrokeStyle bottomStyle, BorderStrokeStyle leftStyle, CornerRadii radii, BorderWidths widths, Insets insets)
    Creates a new `BorderStroke`, specifying all construction parameters.
    Parameters:
      `topStroke` - The fill to use on the top. If `null`, defaults to `Color.BLACK`.
      `rightStroke` - The fill to use on the right. If `null`, defaults to the same value as `topStroke`.
      `bottomStroke` - The fill to use on the bottom. If `null`, defaults to the same value as `topStroke`.
      `leftStroke` - The fill to use on the left. If `null`, defaults to the same value as `rightStroke`.
      `topStyle` - The style to use on the top. If `null`, defaults to `BorderStrokeStyle.NONE`.
      `rightStyle` - The style to use on the right. If `null`, defaults to the same value as `topStyle`.
      `bottomStyle` - The style to use on the bottom. If `null`, defaults to the same value as `topStyle`.
      `leftStyle` - The style to use on the left. If `null`, defaults to the same value as `rightStyle`.
      `radii` - The radii. If `null`, defaults to square corners by using `CornerRadii.EMPTY`.
      `widths` - The thickness of each side. If `null`, defaults to `DEFAULT_WIDTHS`.
      `insets` - The insets indicating where to draw the border relative to the region edges. If `null`, defaults to `Insets.EMPTY`.

- ## Method Details

  - ### getTopStroke

    public final Paint getTopStroke()
    Defines the fill of top side of this border.
    Default value:
      `Color.BLACK`
    Interpolation Type:
      see `Paint`
    Returns:
      the fill of top side of this border

  - ### getRightStroke

    public final Paint getRightStroke()
    Defines the fill of right side of this border. If `null`, then the `topFill` is used.
    Default value:
      `null` (same as `topFill`)
    Interpolation Type:
      see `Paint`
    Returns:
      the fill of right side of this border

  - ### getBottomStroke

    public final Paint getBottomStroke()
    Defines the fill of bottom side of this border. If `null`, then the `topFill` is used.
    Default value:
      `null` (same as `topFill`)
    Interpolation Type:
      see `Paint`
    Returns:
      the fill of bottom side of this border

  - ### getLeftStroke

    public final Paint getLeftStroke()
    Defines the fill of left side of this border. If `null`, then the `rightFill` is used.
    Default value:
      `null` (same as `rightFill`)
    Interpolation Type:
      see `Paint`
    Returns:
      the fill of left side of this border

  - ### getTopStyle

    public final BorderStrokeStyle getTopStyle()
    Defines the style of top side of this border.
    Default value:
      `BorderStrokeStyle.NONE`
    Interpolation Type:
      discrete
    Returns:
      the style of top side of this border

  - ### getRightStyle

    public final BorderStrokeStyle getRightStyle()
    Defines the style of right side of this border. If `null`, then `topStyle` is used;
    Default value:
      `null` (same as `topStyle`)
    Interpolation Type:
      discrete
    Returns:
      the style of right side of this border

  - ### getBottomStyle

    public final BorderStrokeStyle getBottomStyle()
    Defines the style of bottom side of this border. If `null`, then `topStyle` is used; Use `BorderStyle.NONE` to set the border to have no border style.
    Default value:
      `null` (same as `topStyle`)
    Interpolation Type:
      discrete
    Returns:
      the style of bottom side of this border

  - ### getLeftStyle

    public final BorderStrokeStyle getLeftStyle()
    Defines the style of left side of this border. If `null`, then `rightStyle` is used. Use `BorderStyle.NONE` to set the border to have no border style.
    Default value:
      `null` (same as `rightStyle`)
    Interpolation Type:
      discrete
    Returns:
      the style of left side of this border

  - ### getWidths

    public final BorderWidths getWidths()
    Defines the thickness of each side of the `BorderStroke`. This will never be `null`, and defaults to `DEFAULT_WIDTHS`.
    Interpolation Type:
      default
    Returns:
      the thickness of each side of the `BorderStroke`

  - ### getInsets

    public final Insets getInsets()
    Defines the insets of each side of the `BorderStroke`. This will never be `null`, and defaults to `Insets.EMPTY`.
    Interpolation Type:
      default
    Returns:
      the insets of each side of the `BorderStroke`

  - ### getRadii

    public final CornerRadii getRadii()
    Defines the radii for each corner of this `BorderStroke`. This will never be `null`, and defaults to `CornerRadii.EMPTY`.
    Interpolation Type:
      default
    Returns:
      the radii for each corner of this `BorderStroke`

  - ### isStrokeUniform

    public final boolean isStrokeUniform()
    Checks if the stroke of this region is uniform. A uniform stroke has all its side strokes (top, bottom, left, right) of same color, width and style.
    Returns:
      `true` if border stroke is uniform

  - ### interpolate

    public BorderStroke interpolate(BorderStroke endValue, double t)
    Returns an intermediate value between the value of this `Interpolatable` and the specified `endValue` using the linear interpolation factor `t`, ranging from 0 (inclusive) to 1 (inclusive).

    The returned value might not be a new instance; the implementation might also return one of the two existing instances if the intermediate value would be equal to one of the existing values. However, this is an optimization and applications should not assume any particular identity of the returned value.

    Specified by:
      `interpolate` in interface `Interpolatable<BorderStroke>`
    Parameters:
      `endValue` - the target value
      `t` - the interpolation factor
    Returns:
      the intermediate value
    Throws:
      `NullPointerException` - if `endValue` is `null`
    Since:
      24