Package com.formdev.flatlaf.ui
Class FlatButtonUI
- java.lang.Object
-
- javax.swing.plaf.ComponentUI
-
- javax.swing.plaf.ButtonUI
-
- javax.swing.plaf.basic.BasicButtonUI
-
- com.formdev.flatlaf.ui.FlatButtonUI
-
- All Implemented Interfaces:
FlatStylingSupport.StyleableUI
- Direct Known Subclasses:
FlatToggleButtonUI
public class FlatButtonUI extends javax.swing.plaf.basic.BasicButtonUI implements FlatStylingSupport.StyleableUI
Provides the Flat LaF UI delegate forJButton.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classFlatButtonUI.FlatButtonListener
-
Field Summary
Fields Modifier and Type Field Description protected java.awt.Colorbackgroundprivate java.util.concurrent.atomic.AtomicBooleanborderSharedprotected java.lang.StringbuttonTypeprotected java.awt.ColordefaultBackgroundprotected booleandefaultBoldTextprotected java.awt.ColordefaultEndBackgroundprotected java.awt.ColordefaultFocusedBackgroundprotected java.awt.ColordefaultFocusedForegroundprotected java.awt.ColordefaultForegroundprotected java.awt.ColordefaultHoverBackgroundprotected java.awt.ColordefaultHoverForegroundprivate java.awt.InsetsdefaultMarginprotected java.awt.ColordefaultPressedBackgroundprotected java.awt.ColordefaultPressedForegroundprivate booleandefaults_initializedprotected java.awt.ColordefaultShadowColorprotected java.awt.ColordisabledBackgroundprotected java.awt.ColordisabledSelectedBackgroundprotected java.awt.ColordisabledSelectedForegroundprotected java.awt.ColordisabledTextprotected java.awt.ColorendBackgroundprotected java.awt.ColorfocusedBackgroundprotected java.awt.ColorfocusedForegroundprotected java.awt.Colorforegroundprivate javax.swing.IconhelpButtonIconprivate booleanhelpButtonIconSharedprotected java.awt.ColorhoverBackgroundprotected java.awt.ColorhoverForegroundprivate static java.awt.RectangleiconRprotected inticonTextGapprotected intminimumHeightprotected intminimumWidthprivate java.util.Map<java.lang.String,java.lang.Object>oldStyleValuesprotected booleanpaintShadowprotected java.awt.ColorpressedBackgroundprotected java.awt.ColorpressedForegroundprotected java.awt.ColorselectedBackgroundprotected java.awt.ColorselectedForegroundprotected java.awt.ColorshadowColorprotected intshadowWidthprivate booleansharedprotected booleansquareSizeprotected java.awt.ColorstartBackgroundprivate static java.awt.RectangletextRprotected java.awt.ColortoolbarDisabledSelectedBackgroundprotected java.awt.ColortoolbarDisabledSelectedForegroundprotected java.awt.ColortoolbarHoverBackgroundprotected java.awt.ColortoolbarHoverForegroundprotected java.awt.ColortoolbarPressedBackgroundprotected java.awt.ColortoolbarPressedForegroundprotected java.awt.ColortoolbarSelectedBackgroundprotected java.awt.ColortoolbarSelectedForeground(package private) static intTYPE_OTHER(package private) static intTYPE_ROUND_RECT(package private) static intTYPE_SQUAREprivate static java.awt.RectangleviewR
-
Constructor Summary
Constructors Modifier Constructor Description protectedFlatButtonUI(boolean shared)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidapplyStyle(javax.swing.AbstractButton b, java.lang.Object style)protected java.lang.ObjectapplyStyleProperty(javax.swing.AbstractButton b, java.lang.String key, java.lang.Object value)static java.awt.ColorbuttonStateColor(java.awt.Component c, java.awt.Color enabledColor, java.awt.Color disabledColor, java.awt.Color focusedColor, java.awt.Color hoverColor, java.awt.Color pressedColor)protected javax.swing.plaf.basic.BasicButtonListenercreateButtonListener(javax.swing.AbstractButton b)static javax.swing.plaf.ComponentUIcreateUI(javax.swing.JComponent c)private intdefaultBoldPlainWidthDiff(javax.swing.JComponent c)protected java.awt.ColorgetBackground(javax.swing.JComponent c)protected java.awt.ColorgetBackgroundBase(javax.swing.JComponent c, boolean def)intgetBaseline(javax.swing.JComponent c, int width, int height)(package private) static intgetBaselineImpl(javax.swing.JComponent c, int width, int height)Similar to BasicButtonUI.getBaseline(), but does not use zero insets for HTML text, which is done in BasicButtonUI.layout() since Java 19.(package private) static intgetButtonType(java.awt.Component c)(package private) static java.lang.StringgetButtonTypeStr(javax.swing.AbstractButton c)protected java.awt.ColorgetForeground(javax.swing.JComponent c)protected java.awt.ColorgetForegroundBase(javax.swing.JComponent c, boolean def)java.awt.DimensiongetPreferredSize(javax.swing.JComponent c)java.util.Map<java.lang.String,java.lang.Class<?>>getStyleableInfos(javax.swing.JComponent c)java.lang.ObjectgetStyleableValue(javax.swing.JComponent c, java.lang.String key)(package private) java.lang.StringgetStyleType()private booleanhasDefaultMargins(javax.swing.JComponent c)protected voidinstallDefaults(javax.swing.AbstractButton b)protected voidinstallListeners(javax.swing.AbstractButton b)protected voidinstallStyle(javax.swing.AbstractButton b)voidinstallUI(javax.swing.JComponent c)private voidinstallUIImpl(javax.swing.JComponent c)(package private) static booleanisBorderlessButton(java.awt.Component c)(package private) static booleanisContentAreaFilled(java.awt.Component c)protected booleanisCustomBackground(java.awt.Color bg)protected booleanisCustomForeground(java.awt.Color fg)(package private) static booleanisDefaultButton(java.awt.Component c)static booleanisFocusPainted(java.awt.Component c)(package private) static booleanisHelpButton(java.awt.Component c)(package private) static booleanisIconOnlyOrSingleCharacterButton(java.awt.Component c)Returns true if the button has an icon but no text, or it does not have an icon and the text is either "..." or one character.(package private) static booleanisToolBarButton(java.awt.Component c)private static java.lang.Stringlayout(javax.swing.AbstractButton b, java.awt.FontMetrics fm, int width, int height)Similar to BasicButtonUI.layout(), but does not use zero insets for HTML text, which is done in BasicButtonUI.layout() since Java 19.voidpaint(java.awt.Graphics g, javax.swing.JComponent c)Similar to BasicButtonUI.paint(), but does not use zero insets for HTML text, which is done in BasicButtonUI.layout() since Java 19.protected voidpaintBackground(java.awt.Graphics g, javax.swing.JComponent c)protected voidpaintIcon(java.awt.Graphics g, javax.swing.JComponent c, java.awt.Rectangle iconRect)protected voidpaintText(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle textRect, java.lang.String text)static voidpaintText(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle textRect, java.lang.String text, java.awt.Color foreground)protected voidpropertyChange(javax.swing.AbstractButton b, java.beans.PropertyChangeEvent e)protected voiduninstallDefaults(javax.swing.AbstractButton b)protected voiduninstallListeners(javax.swing.AbstractButton b)voidupdate(java.awt.Graphics g, javax.swing.JComponent c)-
Methods inherited from class javax.swing.plaf.basic.BasicButtonUI
clearTextShiftOffset, getBaselineResizeBehavior, getDefaultTextIconGap, getMaximumSize, getMinimumSize, getPropertyPrefix, getTextShiftOffset, installKeyboardActions, paintButtonPressed, paintFocus, paintText, setTextShiftOffset, uninstallKeyboardActions, uninstallUI
-
-
-
-
Field Detail
-
minimumWidth
protected int minimumWidth
-
iconTextGap
protected int iconTextGap
-
background
protected java.awt.Color background
-
foreground
protected java.awt.Color foreground
-
startBackground
protected java.awt.Color startBackground
-
endBackground
protected java.awt.Color endBackground
-
focusedBackground
protected java.awt.Color focusedBackground
-
focusedForeground
protected java.awt.Color focusedForeground
- Since:
- 2.3
-
hoverBackground
protected java.awt.Color hoverBackground
-
hoverForeground
protected java.awt.Color hoverForeground
- Since:
- 2.3
-
pressedBackground
protected java.awt.Color pressedBackground
-
pressedForeground
protected java.awt.Color pressedForeground
- Since:
- 2.3
-
selectedBackground
protected java.awt.Color selectedBackground
-
selectedForeground
protected java.awt.Color selectedForeground
-
disabledBackground
protected java.awt.Color disabledBackground
-
disabledText
protected java.awt.Color disabledText
-
disabledSelectedBackground
protected java.awt.Color disabledSelectedBackground
-
disabledSelectedForeground
protected java.awt.Color disabledSelectedForeground
- Since:
- 2.3
-
defaultBackground
protected java.awt.Color defaultBackground
-
defaultEndBackground
protected java.awt.Color defaultEndBackground
-
defaultForeground
protected java.awt.Color defaultForeground
-
defaultFocusedBackground
protected java.awt.Color defaultFocusedBackground
-
defaultFocusedForeground
protected java.awt.Color defaultFocusedForeground
- Since:
- 2.3
-
defaultHoverBackground
protected java.awt.Color defaultHoverBackground
-
defaultHoverForeground
protected java.awt.Color defaultHoverForeground
- Since:
- 2.3
-
defaultPressedBackground
protected java.awt.Color defaultPressedBackground
-
defaultPressedForeground
protected java.awt.Color defaultPressedForeground
- Since:
- 2.3
-
defaultBoldText
protected boolean defaultBoldText
-
paintShadow
protected boolean paintShadow
-
shadowWidth
protected int shadowWidth
-
shadowColor
protected java.awt.Color shadowColor
-
defaultShadowColor
protected java.awt.Color defaultShadowColor
-
toolbarHoverBackground
protected java.awt.Color toolbarHoverBackground
-
toolbarHoverForeground
protected java.awt.Color toolbarHoverForeground
- Since:
- 2.3
-
toolbarPressedBackground
protected java.awt.Color toolbarPressedBackground
-
toolbarPressedForeground
protected java.awt.Color toolbarPressedForeground
- Since:
- 2.3
-
toolbarSelectedBackground
protected java.awt.Color toolbarSelectedBackground
-
toolbarSelectedForeground
protected java.awt.Color toolbarSelectedForeground
- Since:
- 2.3
-
toolbarDisabledSelectedBackground
protected java.awt.Color toolbarDisabledSelectedBackground
- Since:
- 2.3
-
toolbarDisabledSelectedForeground
protected java.awt.Color toolbarDisabledSelectedForeground
- Since:
- 2.3
-
buttonType
protected java.lang.String buttonType
- Since:
- 2
-
squareSize
protected boolean squareSize
- Since:
- 2
-
minimumHeight
protected int minimumHeight
- Since:
- 2
-
helpButtonIcon
private javax.swing.Icon helpButtonIcon
-
defaultMargin
private java.awt.Insets defaultMargin
-
shared
private final boolean shared
-
helpButtonIconShared
private boolean helpButtonIconShared
-
defaults_initialized
private boolean defaults_initialized
-
oldStyleValues
private java.util.Map<java.lang.String,java.lang.Object> oldStyleValues
-
borderShared
private java.util.concurrent.atomic.AtomicBoolean borderShared
-
TYPE_OTHER
static final int TYPE_OTHER
- See Also:
- Constant Field Values
-
TYPE_SQUARE
static final int TYPE_SQUARE
- See Also:
- Constant Field Values
-
TYPE_ROUND_RECT
static final int TYPE_ROUND_RECT
- See Also:
- Constant Field Values
-
viewR
private static java.awt.Rectangle viewR
-
textR
private static java.awt.Rectangle textR
-
iconR
private static java.awt.Rectangle iconR
-
-
Method Detail
-
createUI
public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent c)
-
installUI
public void installUI(javax.swing.JComponent c)
- Overrides:
installUIin classjavax.swing.plaf.basic.BasicButtonUI
-
installUIImpl
private void installUIImpl(javax.swing.JComponent c)
-
installDefaults
protected void installDefaults(javax.swing.AbstractButton b)
- Overrides:
installDefaultsin classjavax.swing.plaf.basic.BasicButtonUI
-
uninstallDefaults
protected void uninstallDefaults(javax.swing.AbstractButton b)
- Overrides:
uninstallDefaultsin classjavax.swing.plaf.basic.BasicButtonUI
-
installListeners
protected void installListeners(javax.swing.AbstractButton b)
- Overrides:
installListenersin classjavax.swing.plaf.basic.BasicButtonUI
-
uninstallListeners
protected void uninstallListeners(javax.swing.AbstractButton b)
- Overrides:
uninstallListenersin classjavax.swing.plaf.basic.BasicButtonUI
-
createButtonListener
protected javax.swing.plaf.basic.BasicButtonListener createButtonListener(javax.swing.AbstractButton b)
- Overrides:
createButtonListenerin classjavax.swing.plaf.basic.BasicButtonUI
-
propertyChange
protected void propertyChange(javax.swing.AbstractButton b, java.beans.PropertyChangeEvent e)
-
installStyle
protected void installStyle(javax.swing.AbstractButton b)
- Since:
- 2
-
getStyleType
java.lang.String getStyleType()
- Since:
- 2
-
applyStyle
protected void applyStyle(javax.swing.AbstractButton b, java.lang.Object style)- Since:
- 2
-
applyStyleProperty
protected java.lang.Object applyStyleProperty(javax.swing.AbstractButton b, java.lang.String key, java.lang.Object value)- Since:
- 2
-
getStyleableInfos
public java.util.Map<java.lang.String,java.lang.Class<?>> getStyleableInfos(javax.swing.JComponent c)
- Specified by:
getStyleableInfosin interfaceFlatStylingSupport.StyleableUI- Since:
- 2
-
getStyleableValue
public java.lang.Object getStyleableValue(javax.swing.JComponent c, java.lang.String key)- Specified by:
getStyleableValuein interfaceFlatStylingSupport.StyleableUI- Since:
- 2.5
-
isContentAreaFilled
static boolean isContentAreaFilled(java.awt.Component c)
-
isFocusPainted
public static boolean isFocusPainted(java.awt.Component c)
-
isDefaultButton
static boolean isDefaultButton(java.awt.Component c)
-
isIconOnlyOrSingleCharacterButton
static boolean isIconOnlyOrSingleCharacterButton(java.awt.Component c)
Returns true if the button has an icon but no text, or it does not have an icon and the text is either "..." or one character.
-
getButtonType
static int getButtonType(java.awt.Component c)
-
isHelpButton
static boolean isHelpButton(java.awt.Component c)
-
isToolBarButton
static boolean isToolBarButton(java.awt.Component c)
-
isBorderlessButton
static boolean isBorderlessButton(java.awt.Component c)
-
getButtonTypeStr
static java.lang.String getButtonTypeStr(javax.swing.AbstractButton c)
-
update
public void update(java.awt.Graphics g, javax.swing.JComponent c)- Overrides:
updatein classjavax.swing.plaf.ComponentUI
-
paintBackground
protected void paintBackground(java.awt.Graphics g, javax.swing.JComponent c)
-
paint
public void paint(java.awt.Graphics g, javax.swing.JComponent c)Similar to BasicButtonUI.paint(), but does not use zero insets for HTML text, which is done in BasicButtonUI.layout() since Java 19. See https://github.com/openjdk/jdk/pull/8407 and https://github.com/openjdk/jdk/pull/8407#issuecomment-1761583430- Overrides:
paintin classjavax.swing.plaf.basic.BasicButtonUI
-
paintIcon
protected void paintIcon(java.awt.Graphics g, javax.swing.JComponent c, java.awt.Rectangle iconRect)- Overrides:
paintIconin classjavax.swing.plaf.basic.BasicButtonUI
-
paintText
protected void paintText(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle textRect, java.lang.String text)- Overrides:
paintTextin classjavax.swing.plaf.basic.BasicButtonUI
-
paintText
public static void paintText(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle textRect, java.lang.String text, java.awt.Color foreground)
-
getBackground
protected java.awt.Color getBackground(javax.swing.JComponent c)
-
getBackgroundBase
protected java.awt.Color getBackgroundBase(javax.swing.JComponent c, boolean def)
-
isCustomBackground
protected boolean isCustomBackground(java.awt.Color bg)
-
buttonStateColor
public static java.awt.Color buttonStateColor(java.awt.Component c, java.awt.Color enabledColor, java.awt.Color disabledColor, java.awt.Color focusedColor, java.awt.Color hoverColor, java.awt.Color pressedColor)
-
getForeground
protected java.awt.Color getForeground(javax.swing.JComponent c)
-
getForegroundBase
protected java.awt.Color getForegroundBase(javax.swing.JComponent c, boolean def)- Since:
- 2.3
-
isCustomForeground
protected boolean isCustomForeground(java.awt.Color fg)
-
getPreferredSize
public java.awt.Dimension getPreferredSize(javax.swing.JComponent c)
- Overrides:
getPreferredSizein classjavax.swing.plaf.basic.BasicButtonUI
-
defaultBoldPlainWidthDiff
private int defaultBoldPlainWidthDiff(javax.swing.JComponent c)
-
hasDefaultMargins
private boolean hasDefaultMargins(javax.swing.JComponent c)
-
getBaseline
public int getBaseline(javax.swing.JComponent c, int width, int height)- Overrides:
getBaselinein classjavax.swing.plaf.basic.BasicButtonUI
-
getBaselineImpl
static int getBaselineImpl(javax.swing.JComponent c, int width, int height)Similar to BasicButtonUI.getBaseline(), but does not use zero insets for HTML text, which is done in BasicButtonUI.layout() since Java 19. See https://github.com/openjdk/jdk/pull/8407 and https://github.com/openjdk/jdk/pull/8407#issuecomment-1761583430
-
layout
private static java.lang.String layout(javax.swing.AbstractButton b, java.awt.FontMetrics fm, int width, int height)Similar to BasicButtonUI.layout(), but does not use zero insets for HTML text, which is done in BasicButtonUI.layout() since Java 19. See https://github.com/openjdk/jdk/pull/8407 and https://github.com/openjdk/jdk/pull/8407#issuecomment-1761583430
-
-