Class RoundRectBorder
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 Summary
Modifier and TypeMethodDescriptionarrowSize(float size) Change the size of the arrow used for component tracking.bezierCorners(boolean bezierCorners) True if the corners are Bezier curves, otherwise the corners are drawn as a regular arcbottomLeftMode(boolean bottomLeft) True to draw the bottom left corner rounded, false to draw it as a cornerbottomOnlyMode(boolean bottomOnlyMode) Special mode where only the bottom of the round rectangle is rounded and the top is a regular rectanglebottomRightMode(boolean bottomRight) True to draw the bottom right corner rounded, false to draw it as a cornercornerRadius(float cornerRadius) The radius of the corners in millimetersstatic RoundRectBordercreate()Creates a flat border with styles derived from the component UIIDboolean{{}floatThe radius of the corners in millimetersintReturns 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.intReturns 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.floatThe Gaussian blur sizeintThe color of the shadow as an RRGGBB colorintThe opacity of the shadow between 0 and 255floatThe spread of the shadow in pixels of millimetersfloatX axis bias of the shadow between 0 and 1 where 0 is to the top and 1 is to the bottom, defaults to 0.5floatY axis bias of the shadow between 0 and 1 where 0 is to the left and 1 is to the right, defaults to 0.5intThe color of the edge of the border if applicableintThe opacity of the edge of the border if applicablefloatThe thickness of the edge of the border if applicable, 0 if no stroke is neededfloatGets the explicitly set horizontal position of the tracking arrow.intGets the side that the tracking component should be displayed on if using explicit placement.floatGets the explicitly set vertical position of the tracking arrow.inthashCode()booleanReturns true if installing this border will override the painting of the component backgroundbooleanTrue if the corners are bezier curves, otherwise the corners are drawn as a regular arcbooleanReturns true if this border corner is round and false if it's squarebooleanSpecial mode where only the bottom of the round rectangle is rounded and the top is a regular rectanglebooleanReturns true if this border corner is round and false if it's squarebooleanTrue if the thickness of the stroke is in millimetersbooleanReturns true if this border corner is round and false if it's squarebooleanSpecial mode where only the top of the round rectangle is rounded and the bottom is a regular rectanglebooleanReturns true if this border corner is round and false if it's squarebooleanChecks whether this RoundRectBorder instance caches the border as a background image.voidHas 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.voidsetArrowSize(float size) Change the size of the arrow used for component tracking.shadowBlur(float shadowBlur) The blur on the shadow this is the standard Gaussian blur radiusshadowColor(int shadowColor) Sets the color of the shadow as an RRGGBB colorshadowOpacity(int shadowOpacity) Sets the opacity of the shadow from 0 - 255 where 0 means no shadow and 255 means opaque black shadowshadowSpread(float shadowSpread) Sets the spread of the shadow in millimeters i.e how much bigger is it than the actual bordershadowSpread(int shadowSpread) Sets the spread in pixels of the shadow i.e how much bigger is it than the actual bordershadowX(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 sideshadowY(float shadowY) The position of the shadow on the Y axis where 0.5f means the center and higher values draw it to the bottomstroke(float stroke, boolean mm) Sets the stroke of the borderSets the stroke of the borderstrokeColor(int strokeColor) Sets the stroke color of the borderstrokeOpacity(int strokeOpacity) Sets the opacity of the stroke line around the bordertopLeftMode(boolean topLeft) True to draw the top left corner rounded, false to draw it as a cornertopOnlyMode(boolean topOnlyMode) Special mode where only the top of the round rectangle is rounded and the bottom is a regular rectangletopRightMode(boolean topRight) True to draw the top right corner rounded, false to draw it as a cornertrackComponentHorizontalPosition(float pos) Explicitly sets the horizontal position of the tracking arrow.trackComponentSide(int side) Explicitly positions the arrow used for component tracking to a particular side of the border.trackComponentVerticalPosition(float pos) Explicitly sets the vertical position of the tracking arrow.useCache(boolean useCache) Sets whether this RoundRectBorder instance should cache the border as a background image.Methods inherited from class Border
addOuterBorder, clearImageBorderSpecialTile, createBevelLowered, createBevelLowered, createBevelRaised, createBevelRaised, createCompoundBorder, createDashedBorder, createDashedBorder, createDottedBorder, createDottedBorder, createDoubleBorder, createDoubleBorder, createEmpty, createEtchedLowered, createEtchedLowered, createEtchedRaised, createEtchedRaised, createGrooveBorder, createGrooveBorder, createHorizonalImageBorder, createImageBorder, createImageBorder, createImageScaledBorder, createImageSplicedBorder, createInsetBorder, createInsetBorder, createLineBorder, createLineBorder, createLineBorder, createLineBorder, createLineBorder, createLineBorder, createOutsetBorder, createOutsetBorder, createPressedVersion, createRidgeBorder, createRidgeBorder, createRoundBorder, createRoundBorder, createRoundBorder, createRoundBorder, createUndelineBorder, createUndelineBorder, createUnderlineBorder, createUnderlineBorder, createUnderlineBorder, createUnderlineBorder, createVerticalImageBorder, getCompoundBorders, getDefaultBorder, getEmpty, getFocusedInstance, getPressedInstance, getProperty, getThickness, getTrackComponent, isEmptyBorder, isPaintOuterBorderFirst, isRectangleType, lock, mirrorBorder, paint, setDefaultBorder, setFocusedInstance, setImageBorderSpecialTile, setImageBorderSpecialTile, setPaintOuterBorderFirst, setPressedInstance, setThickness, setTrackComponent, setTrackComponent, unlock
-
Method Details
-
create
Creates a flat border with styles derived from the component UIID
Returns
a border instance
-
arrowSize
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
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
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. ValuesComponent#TOP,Component#BOTTOM,Component#LEFT, orComponent#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. orComponent#BOTTOM.Since
7.0
-
trackComponentVerticalPosition
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
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
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
Sets the stroke color of the border
Parameters
strokeColor: the color
Returns
border instance so these calls can be chained
-
stroke
Sets the stroke of the border
Parameters
stroke: the stroke object
Returns
border instance so these calls can be chained
-
stroke
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
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
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
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
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
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
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
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
The radius of the corners in millimeters
Parameters
cornerRadius: the radius value
Returns
border instance so these calls can be chained
-
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
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
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
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
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
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
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
Description copied from class:BorderHas 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:
paintBorderBackgroundin classBorder
-
-
getMinimumHeight
public int getMinimumHeight()Description copied from class:BorderReturns 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:
getMinimumHeightin classBorder
-
getMinimumWidth
public int getMinimumWidth()Description copied from class:BorderReturns 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:
getMinimumWidthin classBorder
-
isBackgroundPainter
public boolean isBackgroundPainter()Description copied from class:BorderReturns true if installing this border will override the painting of the component background
Returns
true if this border replaces the painter
- Overrides:
isBackgroundPainterin classBorder
-
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
-
hashCode
-
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
-