Class RoundRectBorder

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

public final class RoundRectBorder extends Border

Customizable rounded rectangle border that breaks down the border into customizable pieces.

The background is inherited from the parent UIID but stroke and shadow can be customized via user settings.

IMPORTANT: RoundRectBorder instances can't be reused you would need to create a separate instance for each style object! See this issue for further details.

Form hi = new Form("RoundRect", new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER));

Button ok = new Button("OK");
Button cancel = new Button("Cancel");

Label loginLabel = new Label("Login", "Container");
loginLabel.getAllStyles().setAlignment(Component.CENTER);

Label passwordLabel = new Label("Password", "Container");
passwordLabel.getAllStyles().setAlignment(Component.CENTER);

TextField login = new TextField("", "Login", 20, TextArea.ANY);
TextField password = new TextField("", "Password", 20, TextArea.PASSWORD);
Style loginStyle = login.getAllStyles();
Stroke borderStroke = new Stroke(2, Stroke.CAP_SQUARE, Stroke.JOIN_MITER, 1);
loginStyle.setBorder(RoundRectBorder.create().
        strokeColor(0).
        strokeOpacity(120).
        stroke(borderStroke));
loginStyle.setBgColor(0xffffff);
loginStyle.setBgTransparency(255);
loginStyle.setMarginUnit(Style.UNIT_TYPE_DIPS);
loginStyle.setMargin(Component.BOTTOM, 3);
Style passwordStyle = password.getAllStyles();
passwordStyle.setBorder(RoundRectBorder.create().
        strokeColor(0).
        strokeOpacity(120).
        stroke(borderStroke));
passwordStyle.setBgColor(0xffffff);
passwordStyle.setBgTransparency(255);

Container box = BoxLayout.encloseY(
        loginLabel,
        login,
        passwordLabel,
        password,
            GridLayout.encloseIn(2, cancel, ok));

Button closeButton = new Button();
Style closeStyle = closeButton.getAllStyles();
closeStyle.setFgColor(0xffffff);
closeStyle.setBgTransparency(0);
closeStyle.setPaddingUnit(Style.UNIT_TYPE_DIPS);
closeStyle.setPadding(3, 3, 3, 3);
closeStyle.setBorder(RoundBorder.create().shadowOpacity(100));
FontImage.setMaterialIcon(closeButton, FontImage.MATERIAL_CLOSE);

Container layers = LayeredLayout.encloseIn(box, FlowLayout.encloseRight(closeButton));
Style boxStyle = box.getUnselectedStyle();
boxStyle.setBgTransparency(255);
boxStyle.setBgColor(0xeeeeee);
boxStyle.setMarginUnit(Style.UNIT_TYPE_DIPS);
boxStyle.setPaddingUnit(Style.UNIT_TYPE_DIPS);
boxStyle.setMargin(4, 3, 3, 3);
boxStyle.setPadding(2, 2, 2, 2);

hi.add(BorderLayout.CENTER, layers);

hi.show();
  • Method Details

    • create

      public static RoundRectBorder create()

      Creates a flat border with styles derived from the component UIID

      Returns

      a border instance

    • arrowSize

      public RoundRectBorder arrowSize(float size)

      Change the size of the arrow used for component tracking.

      Parameters
      • size: Size of arrow in millimeters.
      Returns

      a border instance

      Since

      7.0

    • setArrowSize

      public void setArrowSize(float size)

      Change the size of the arrow used for component tracking.

      Parameters
      • size: Size of arrow in millimeters.
      Since

      7.0

    • strokeOpacity

      public RoundRectBorder strokeOpacity(int strokeOpacity)

      Sets the opacity of the stroke line around the border

      Parameters
      • strokeOpacity: the opacity from 0-255 where 255 is completely opaque
      Returns

      border instance so these calls can be chained

    • trackComponentSide

      public RoundRectBorder trackComponentSide(int side)

      Explicitly positions the arrow used for component tracking to a particular side of the border. This can be used to override the default positioning, which is to place the arrow according to the position of the tracking component (#setTrackComponent(com.codename1.ui.geom.Rectangle)). Use in conjunction with #trackComponentHorizontalPosition(float), and #trackComponentHorizontalPosition.

      Parameters
      • side: @param side The side to place the tracking arrow on. Values Component#TOP, Component#BOTTOM, Component#LEFT, or Component#BOTTOM. Set negative value for default behaviour, which is to just calculate the arrow position based on the tracking component bounds.
      Returns

      Self for chaining.

      Since

      7.0

    • getTrackComponentSide

      public int getTrackComponentSide()

      Gets the side that the tracking component should be displayed on if using explicit placement.

      Returns
      Returns:

      The side that the arrow should be rendered on. Values Component#TOP, Component#BOTTOM, Component#LEFT, or a negative number to indicate that the position will be calculated based on the position of the tracking component. or Component#BOTTOM.

      Since

      7.0

    • trackComponentVerticalPosition

      public RoundRectBorder trackComponentVerticalPosition(float pos)

      Explicitly sets the vertical position of the tracking arrow. This can be used to override the default positioning, which is to place the arrow according to the position of the tracking component (#setTrackComponent(com.codename1.ui.geom.Rectangle)).

      Parameters
      • pos: @param pos Vertical position of the arrow. Values between 0 and 1 will place the arrow in the range from top to bottom. Negative values result in default behaviour, which is to calculate the position based on the tracking component position.
      Returns

      Self for chainging.

      Since

      7.0

    • getTrackComponentVerticalPosition

      public float getTrackComponentVerticalPosition()

      Gets the explicitly set vertical position of the tracking arrow. This can be used to override the default positioning, which is to place the arrow according to the position of the tracking component (#setTrackComponent(com.codename1.ui.geom.Rectangle)).

      Returns
      Returns:

      Vertical position of the arrow. Values between 0 and 1 will place the arrow in the range from top to bottom. Negative values result in default behaviour, which is to calculate the position based on the tracking component position.

      Since

      7.0

    • trackComponentHorizontalPosition

      public RoundRectBorder trackComponentHorizontalPosition(float pos)

      Explicitly sets the horizontal position of the tracking arrow. This can be used to override the default positioning, which is to place the arrow according to the position of the tracking component (#setTrackComponent(com.codename1.ui.geom.Rectangle)).

      Parameters
      • pos: @param pos Vertical position of the arrow. Values between 0 and 1 will place the arrow in the range from left to right. Negative values result in default behaviour, which is to calculate the position based on the tracking component position.
      Returns

      Self for chainging.

      Since

      7.0

    • getTrackComponentHorizontalPosition

      public float getTrackComponentHorizontalPosition()

      Gets the explicitly set horizontal position of the tracking arrow. This can be used to override the default positioning, which is to place the arrow according to the position of the tracking component (#setTrackComponent(com.codename1.ui.geom.Rectangle)).

      Returns
      Returns:

      Vertical position of the arrow. Values between 0 and 1 will place the arrow in the range from left to right. Negative values result in default behaviour, which is to calculate the position based on the tracking component position.

      Since

      7.0

    • useCache

      public RoundRectBorder useCache(boolean useCache)

      Sets whether this RoundRectBorder instance should cache the border as a background image.

      This setting is on by default, but can be turned off, as some older, low-memory devices may run into memory trouble if it is using a lot of RoundRectBorders. Turn the cache off for low-memory devices.

      NOTE: Using the cache is required for gaussian blur to work. If cache is disabled, then gaussian blur settings will be ignored.

      Parameters
      • useCache: True to cache the border as a mutable image on the Component.
      Returns

      Self for chaining.

      Since

      8.0

    • isUseCache

      public boolean isUseCache()
      Checks whether this RoundRectBorder instance caches the border as a background image.
    • strokeColor

      public RoundRectBorder strokeColor(int strokeColor)

      Sets the stroke color of the border

      Parameters
      • strokeColor: the color
      Returns

      border instance so these calls can be chained

    • stroke

      public RoundRectBorder stroke(Stroke stroke)

      Sets the stroke of the border

      Parameters
      • stroke: the stroke object
      Returns

      border instance so these calls can be chained

    • stroke

      public RoundRectBorder stroke(float stroke, boolean mm)

      Sets the stroke of the border

      Parameters
      • stroke: the thickness of the stroke object

      • mm: set to true to indicate the value is in millimeters, false indicates pixels

      Returns

      border instance so these calls can be chained

    • shadowSpread

      public RoundRectBorder shadowSpread(float shadowSpread)

      Sets the spread of the shadow in millimeters i.e how much bigger is it than the actual border

      Parameters
      • shadowSpread: the amount in millimeters representing the size of the shadow
      Returns

      border instance so these calls can be chained

    • shadowSpread

      public RoundRectBorder shadowSpread(int shadowSpread)

      Sets the spread in pixels of the shadow i.e how much bigger is it than the actual border

      Parameters
      • shadowSpread: the amount in pixels representing the size of the shadow
      Returns

      border instance so these calls can be chained

    • shadowOpacity

      public RoundRectBorder shadowOpacity(int shadowOpacity)

      Sets the opacity of the shadow from 0 - 255 where 0 means no shadow and 255 means opaque black shadow

      Parameters
      • shadowOpacity: the opacity of the shadow
      Returns

      border instance so these calls can be chained

    • shadowColor

      public RoundRectBorder shadowColor(int shadowColor)

      Sets the color of the shadow as an RRGGBB color

      Parameters
      • shadowColor: the color of the shadow
      Returns

      border instance so these calls can be chained

    • shadowX

      public RoundRectBorder shadowX(float shadowX)

      The position of the shadow on the X axis where 0.5f means the center and higher values draw it to the right side

      Parameters
      • shadowX: the position of the shadow between 0 - 1 where 0 equals left and 1 equals right
      Returns

      border instance so these calls can be chained

    • shadowY

      public RoundRectBorder shadowY(float shadowY)

      The position of the shadow on the Y axis where 0.5f means the center and higher values draw it to the bottom

      Parameters
      • shadowY: the position of the shadow between 0 - 1 where 0 equals top and 1 equals bottom
      Returns

      border instance so these calls can be chained

    • shadowBlur

      public RoundRectBorder shadowBlur(float shadowBlur)

      The blur on the shadow this is the standard Gaussian blur radius

      Parameters
      • shadowBlur: The blur on the shadow this is the standard Gaussian blur radius
      Returns

      border instance so these calls can be chained

    • cornerRadius

      public RoundRectBorder cornerRadius(float cornerRadius)

      The radius of the corners in millimeters

      Parameters
      • cornerRadius: the radius value
      Returns

      border instance so these calls can be chained

    • bezierCorners

      public RoundRectBorder bezierCorners(boolean bezierCorners)

      True if the corners are Bezier curves, otherwise the corners are drawn as a regular arc

      Parameters
      • bezierCorners: true if the corners use a bezier curve for drawing
      Returns

      border instance so these calls can be chained

    • topLeftMode

      public RoundRectBorder topLeftMode(boolean topLeft)

      True to draw the top left corner rounded, false to draw it as a corner

      Parameters
      • topLeft: true for round false for sharp
      Returns

      border instance so these calls can be chained

    • topRightMode

      public RoundRectBorder topRightMode(boolean topRight)

      True to draw the top right corner rounded, false to draw it as a corner

      Parameters
      • topRight: true for round false for sharp
      Returns

      border instance so these calls can be chained

    • bottomLeftMode

      public RoundRectBorder bottomLeftMode(boolean bottomLeft)

      True to draw the bottom left corner rounded, false to draw it as a corner

      Parameters
      • bottomLeft: true for round false for sharp
      Returns

      border instance so these calls can be chained

    • bottomRightMode

      public RoundRectBorder bottomRightMode(boolean bottomRight)

      True to draw the bottom right corner rounded, false to draw it as a corner

      Parameters
      • bottomRight: true for round false for sharp
      Returns

      border instance so these calls can be chained

    • topOnlyMode

      public RoundRectBorder topOnlyMode(boolean topOnlyMode)

      Special mode where only the top of the round rectangle is rounded and the bottom is a regular rectangle

      Parameters
      • topOnlyMode: new value for top only mode
      Returns

      border instance so these calls can be chained

    • bottomOnlyMode

      public RoundRectBorder bottomOnlyMode(boolean bottomOnlyMode)

      Special mode where only the bottom of the round rectangle is rounded and the top is a regular rectangle

      Parameters
      • bottomOnlyMode: new value for bottom only mode
      Returns

      border instance so these calls can be chained

    • paintBorderBackground

      public void paintBorderBackground(Graphics g, Component c)
      Description copied from class: Border

      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

      Overrides:
      paintBorderBackground in class Border
    • getMinimumHeight

      public int getMinimumHeight()
      Description copied from class: Border

      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.

      Overrides:
      getMinimumHeight in class Border
    • getMinimumWidth

      public int getMinimumWidth()
      Description copied from class: Border

      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.

      Overrides:
      getMinimumWidth in class Border
    • isBackgroundPainter

      public boolean isBackgroundPainter()
      Description copied from class: Border

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

      Returns

      true if this border replaces the painter

      Overrides:
      isBackgroundPainter in class Border
    • getStrokeColor

      public int getStrokeColor()

      The color of the edge of the border if applicable

      Returns

      the strokeColor

    • getStrokeOpacity

      public int getStrokeOpacity()

      The opacity of the edge of the border if applicable

      Returns

      the strokeOpacity

    • getStrokeThickness

      public float getStrokeThickness()

      The thickness of the edge of the border if applicable, 0 if no stroke is needed

      Returns

      the strokeThickness

    • isStrokeMM

      public boolean isStrokeMM()

      True if the thickness of the stroke is in millimeters

      Returns

      the strokeMM

    • isBezierCorners

      public boolean isBezierCorners()

      True if the corners are bezier curves, otherwise the corners are drawn as a regular arc

      Returns

      true if the corners are a curve

    • getShadowSpread

      public float getShadowSpread()

      The spread of the shadow in pixels of millimeters

      Returns

      the shadowSpread

    • getShadowOpacity

      public int getShadowOpacity()

      The opacity of the shadow between 0 and 255

      Returns

      the shadowOpacity

    • getShadowColor

      public int getShadowColor()

      The color of the shadow as an RRGGBB color

      Returns

      the shadowColor

    • getShadowX

      public float getShadowX()

      X axis bias of the shadow between 0 and 1 where 0 is to the top and 1 is to the bottom, defaults to 0.5

      Returns

      the shadowX

    • getShadowY

      public float getShadowY()

      Y axis bias of the shadow between 0 and 1 where 0 is to the left and 1 is to the right, defaults to 0.5

      Returns

      the shadowY

    • getShadowBlur

      public float getShadowBlur()

      The Gaussian blur size

      Returns

      the shadowBlur

    • getCornerRadius

      public float getCornerRadius()

      The radius of the corners in millimeters

      Returns

      the radius

    • isTopOnlyMode

      public boolean isTopOnlyMode()

      Special mode where only the top of the round rectangle is rounded and the bottom is a regular rectangle

      Returns

      whether this is the top only mode

    • isBottomOnlyMode

      public boolean isBottomOnlyMode()

      Special mode where only the bottom of the round rectangle is rounded and the top is a regular rectangle

      Returns

      whether this is the bottom only mode

    • equals

      public boolean equals(Object obj)
      Description copied from class: Border
      {}
      Overrides:
      equals in class Border
    • hashCode

      public int hashCode()
      Description copied from class: Border
      Overrides:
      hashCode in class Border
    • isTopLeft

      public boolean isTopLeft()

      Returns true if this border corner is round and false if it's square

      Returns

      the topLeft value

    • isTopRight

      public boolean isTopRight()

      Returns true if this border corner is round and false if it's square

      Returns

      the topRight value

    • isBottomLeft

      public boolean isBottomLeft()

      Returns true if this border corner is round and false if it's square

      Returns

      the bottomLeft value

    • isBottomRight

      public boolean isBottomRight()

      Returns true if this border corner is round and false if it's square

      Returns

      the bottomRight value