mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-12 23:07:15 -06:00
CheckBox and RadioButton: support hover, pressed and focused backgrounds and borders
This commit is contained in:
@@ -24,6 +24,7 @@ import java.awt.Graphics2D;
|
|||||||
import java.awt.geom.Path2D;
|
import java.awt.geom.Path2D;
|
||||||
import javax.swing.AbstractButton;
|
import javax.swing.AbstractButton;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
|
import com.formdev.flatlaf.ui.FlatButtonUI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Icon for {@link javax.swing.JCheckBox}.
|
* Icon for {@link javax.swing.JCheckBox}.
|
||||||
@@ -34,10 +35,16 @@ import javax.swing.UIManager;
|
|||||||
* @uiDefault CheckBox.icon.disabledBorderColor Color
|
* @uiDefault CheckBox.icon.disabledBorderColor Color
|
||||||
* @uiDefault CheckBox.icon.selectedBorderColor Color
|
* @uiDefault CheckBox.icon.selectedBorderColor Color
|
||||||
* @uiDefault CheckBox.icon.focusedBorderColor Color
|
* @uiDefault CheckBox.icon.focusedBorderColor Color
|
||||||
* @uiDefault CheckBox.icon.selectedFocusedBorderColor Color
|
* @uiDefault CheckBox.icon.hoverBorderColor Color optional
|
||||||
|
* @uiDefault CheckBox.icon.selectedFocusedBorderColor Color optional
|
||||||
* @uiDefault CheckBox.icon.background Color
|
* @uiDefault CheckBox.icon.background Color
|
||||||
* @uiDefault CheckBox.icon.disabledBackground Color
|
* @uiDefault CheckBox.icon.disabledBackground Color
|
||||||
|
* @uiDefault CheckBox.icon.focusedBackground Color optional
|
||||||
|
* @uiDefault CheckBox.icon.hoverBackground Color optional
|
||||||
|
* @uiDefault CheckBox.icon.pressedBackground Color optional
|
||||||
* @uiDefault CheckBox.icon.selectedBackground Color
|
* @uiDefault CheckBox.icon.selectedBackground Color
|
||||||
|
* @uiDefault CheckBox.icon.selectedHoverBackground Color optional
|
||||||
|
* @uiDefault CheckBox.icon.selectedPressedBackground Color optional
|
||||||
* @uiDefault CheckBox.icon.checkmarkColor Color
|
* @uiDefault CheckBox.icon.checkmarkColor Color
|
||||||
* @uiDefault CheckBox.icon.disabledCheckmarkColor Color
|
* @uiDefault CheckBox.icon.disabledCheckmarkColor Color
|
||||||
*
|
*
|
||||||
@@ -53,10 +60,16 @@ public class FlatCheckBoxIcon
|
|||||||
protected final Color disabledBorderColor = UIManager.getColor( "CheckBox.icon.disabledBorderColor" );
|
protected final Color disabledBorderColor = UIManager.getColor( "CheckBox.icon.disabledBorderColor" );
|
||||||
protected final Color selectedBorderColor = UIManager.getColor( "CheckBox.icon.selectedBorderColor" );
|
protected final Color selectedBorderColor = UIManager.getColor( "CheckBox.icon.selectedBorderColor" );
|
||||||
protected final Color focusedBorderColor = UIManager.getColor( "CheckBox.icon.focusedBorderColor" );
|
protected final Color focusedBorderColor = UIManager.getColor( "CheckBox.icon.focusedBorderColor" );
|
||||||
|
protected final Color hoverBorderColor = UIManager.getColor( "CheckBox.icon.hoverBorderColor" );
|
||||||
protected final Color selectedFocusedBorderColor = UIManager.getColor( "CheckBox.icon.selectedFocusedBorderColor" );
|
protected final Color selectedFocusedBorderColor = UIManager.getColor( "CheckBox.icon.selectedFocusedBorderColor" );
|
||||||
protected final Color background = UIManager.getColor( "CheckBox.icon.background" );
|
protected final Color background = UIManager.getColor( "CheckBox.icon.background" );
|
||||||
protected final Color disabledBackground = UIManager.getColor( "CheckBox.icon.disabledBackground" );
|
protected final Color disabledBackground = UIManager.getColor( "CheckBox.icon.disabledBackground" );
|
||||||
|
protected final Color focusedBackground = UIManager.getColor( "CheckBox.icon.focusedBackground" );
|
||||||
|
protected final Color hoverBackground = UIManager.getColor( "CheckBox.icon.hoverBackground" );
|
||||||
|
protected final Color pressedBackground = UIManager.getColor( "CheckBox.icon.pressedBackground" );
|
||||||
protected final Color selectedBackground = UIManager.getColor( "CheckBox.icon.selectedBackground" );
|
protected final Color selectedBackground = UIManager.getColor( "CheckBox.icon.selectedBackground" );
|
||||||
|
protected final Color selectedHoverBackground = UIManager.getColor( "CheckBox.icon.selectedHoverBackground" );
|
||||||
|
protected final Color selectedPressedBackground = UIManager.getColor( "CheckBox.icon.selectedPressedBackground" );
|
||||||
protected final Color checkmarkColor = UIManager.getColor( "CheckBox.icon.checkmarkColor" );
|
protected final Color checkmarkColor = UIManager.getColor( "CheckBox.icon.checkmarkColor" );
|
||||||
protected final Color disabledCheckmarkColor = UIManager.getColor( "CheckBox.icon.disabledCheckmarkColor" );
|
protected final Color disabledCheckmarkColor = UIManager.getColor( "CheckBox.icon.disabledCheckmarkColor" );
|
||||||
|
|
||||||
@@ -68,33 +81,35 @@ public class FlatCheckBoxIcon
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void paintIcon( Component c, Graphics2D g2 ) {
|
protected void paintIcon( Component c, Graphics2D g2 ) {
|
||||||
boolean enabled = c.isEnabled();
|
boolean selected = (c instanceof AbstractButton) ? ((AbstractButton)c).isSelected() : false;
|
||||||
boolean focused = c.hasFocus();
|
|
||||||
boolean selected = (c instanceof AbstractButton) && ((AbstractButton)c).isSelected();
|
|
||||||
|
|
||||||
// paint focused border
|
// paint focused border
|
||||||
if( focused ) {
|
if( c.hasFocus() ) {
|
||||||
g2.setColor( focusColor );
|
g2.setColor( focusColor );
|
||||||
paintFocusBorder( g2 );
|
paintFocusBorder( g2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// paint border
|
// paint border
|
||||||
g2.setColor( enabled
|
g2.setColor( FlatButtonUI.buttonStateColor( c,
|
||||||
? (selected
|
selected ? selectedBorderColor : borderColor,
|
||||||
? (focused ? selectedFocusedBorderColor : selectedBorderColor)
|
disabledBorderColor,
|
||||||
: (focused ? focusedBorderColor : borderColor))
|
selected && selectedFocusedBorderColor != null ? selectedFocusedBorderColor : focusedBorderColor,
|
||||||
: disabledBorderColor );
|
hoverBorderColor,
|
||||||
|
null ) );
|
||||||
paintBorder( g2 );
|
paintBorder( g2 );
|
||||||
|
|
||||||
// paint background
|
// paint background
|
||||||
g2.setColor( enabled
|
g2.setColor( FlatButtonUI.buttonStateColor( c,
|
||||||
? (selected ? selectedBackground : background)
|
selected ? selectedBackground : background,
|
||||||
: disabledBackground );
|
disabledBackground,
|
||||||
|
focusedBackground,
|
||||||
|
selected && selectedHoverBackground != null ? selectedHoverBackground : hoverBackground,
|
||||||
|
selected && selectedPressedBackground != null ? selectedPressedBackground : pressedBackground ) );
|
||||||
paintBackground( g2 );
|
paintBackground( g2 );
|
||||||
|
|
||||||
// paint checkmark
|
// paint checkmark
|
||||||
if( selected ) {
|
if( selected ) {
|
||||||
g2.setColor( enabled ? checkmarkColor : disabledCheckmarkColor );
|
g2.setColor( c.isEnabled() ? checkmarkColor : disabledCheckmarkColor );
|
||||||
paintCheckmark( g2 );
|
paintCheckmark( g2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ Button.pressedBackground=5c6164
|
|||||||
Button.borderColor=5e6060
|
Button.borderColor=5e6060
|
||||||
Button.disabledBorderColor=5e6060
|
Button.disabledBorderColor=5e6060
|
||||||
Button.focusedBorderColor=466d94
|
Button.focusedBorderColor=466d94
|
||||||
Button.hoverBorderColor=466d94
|
Button.hoverBorderColor=@@Button.focusedBorderColor
|
||||||
|
|
||||||
Button.default.background=365880
|
Button.default.background=365880
|
||||||
Button.default.foreground=bbbbbb
|
Button.default.foreground=bbbbbb
|
||||||
@@ -88,9 +88,12 @@ CheckBox.icon.borderColor=6B6B6B
|
|||||||
CheckBox.icon.disabledBorderColor=545556
|
CheckBox.icon.disabledBorderColor=545556
|
||||||
CheckBox.icon.selectedBorderColor=6B6B6B
|
CheckBox.icon.selectedBorderColor=6B6B6B
|
||||||
CheckBox.icon.focusedBorderColor=466D94
|
CheckBox.icon.focusedBorderColor=466D94
|
||||||
|
CheckBox.icon.hoverBorderColor=@@CheckBox.icon.focusedBorderColor
|
||||||
CheckBox.icon.selectedFocusedBorderColor=466D94
|
CheckBox.icon.selectedFocusedBorderColor=466D94
|
||||||
CheckBox.icon.background=43494A
|
CheckBox.icon.background=43494A
|
||||||
CheckBox.icon.disabledBackground=@background
|
CheckBox.icon.disabledBackground=@background
|
||||||
|
CheckBox.icon.hoverBackground=4c5052
|
||||||
|
CheckBox.icon.pressedBackground=@@Button.pressedBackground
|
||||||
CheckBox.icon.selectedBackground=43494A
|
CheckBox.icon.selectedBackground=43494A
|
||||||
CheckBox.icon.checkmarkColor=A7A7A7
|
CheckBox.icon.checkmarkColor=A7A7A7
|
||||||
CheckBox.icon.disabledCheckmarkColor=606060
|
CheckBox.icon.disabledCheckmarkColor=606060
|
||||||
|
|||||||
@@ -26,9 +26,13 @@ Button.focusedBackground=null
|
|||||||
#---- CheckBox ----
|
#---- CheckBox ----
|
||||||
|
|
||||||
CheckBox.icon.selectedBorderColor=4982CC
|
CheckBox.icon.selectedBorderColor=4982CC
|
||||||
|
CheckBox.icon.selectedFocusedBorderColor=ACCFF7
|
||||||
CheckBox.icon.selectedBackground=4D89C9
|
CheckBox.icon.selectedBackground=4D89C9
|
||||||
CheckBox.icon.checkmarkColor=FFFFFF
|
CheckBox.icon.checkmarkColor=FFFFFF
|
||||||
|
|
||||||
|
CheckBox.icon.selectedHoverBackground=5E94CE
|
||||||
|
CheckBox.icon.selectedPressedBackground=72A1D4
|
||||||
|
|
||||||
|
|
||||||
#---- Component ----
|
#---- Component ----
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ Button.pressedBackground=dfdfdf
|
|||||||
Button.borderColor=bfbfbf
|
Button.borderColor=bfbfbf
|
||||||
Button.disabledBorderColor=cfcfcf
|
Button.disabledBorderColor=cfcfcf
|
||||||
Button.focusedBorderColor=87afda
|
Button.focusedBorderColor=87afda
|
||||||
Button.hoverBorderColor=87afda
|
Button.hoverBorderColor=@@Button.focusedBorderColor
|
||||||
|
|
||||||
Button.default.background=4A86C7
|
Button.default.background=4A86C7
|
||||||
Button.default.foreground=f0f0f0
|
Button.default.foreground=f0f0f0
|
||||||
@@ -89,9 +89,12 @@ CheckBox.icon.borderColor=878787
|
|||||||
CheckBox.icon.disabledBorderColor=BDBDBD
|
CheckBox.icon.disabledBorderColor=BDBDBD
|
||||||
CheckBox.icon.selectedBorderColor=878787
|
CheckBox.icon.selectedBorderColor=878787
|
||||||
CheckBox.icon.focusedBorderColor=7B9FC7
|
CheckBox.icon.focusedBorderColor=7B9FC7
|
||||||
CheckBox.icon.selectedFocusedBorderColor=ACCFF7
|
CheckBox.icon.hoverBorderColor=@@CheckBox.icon.focusedBorderColor
|
||||||
CheckBox.icon.background=FFFFFF
|
CheckBox.icon.background=FFFFFF
|
||||||
CheckBox.icon.disabledBackground=@background
|
CheckBox.icon.disabledBackground=@background
|
||||||
|
CheckBox.icon.focusedBackground=@@Button.focusedBackground
|
||||||
|
CheckBox.icon.hoverBackground=@@Button.hoverBackground
|
||||||
|
CheckBox.icon.pressedBackground=@@Button.pressedBackground
|
||||||
CheckBox.icon.selectedBackground=FFFFFF
|
CheckBox.icon.selectedBackground=FFFFFF
|
||||||
CheckBox.icon.checkmarkColor=4D89C9
|
CheckBox.icon.checkmarkColor=4D89C9
|
||||||
CheckBox.icon.disabledCheckmarkColor=ABABAB
|
CheckBox.icon.disabledCheckmarkColor=ABABAB
|
||||||
|
|||||||
@@ -73,9 +73,13 @@ CheckBox.icon.borderColor=878787
|
|||||||
CheckBox.icon.disabledBorderColor=BDBDBD
|
CheckBox.icon.disabledBorderColor=BDBDBD
|
||||||
CheckBox.icon.selectedBorderColor=4982CC
|
CheckBox.icon.selectedBorderColor=4982CC
|
||||||
CheckBox.icon.focusedBorderColor=7B9FC7
|
CheckBox.icon.focusedBorderColor=7B9FC7
|
||||||
|
CheckBox.icon.hoverBorderColor=ff0000
|
||||||
CheckBox.icon.selectedFocusedBorderColor=ACCFF7
|
CheckBox.icon.selectedFocusedBorderColor=ACCFF7
|
||||||
CheckBox.icon.background=FFFFFF
|
CheckBox.icon.background=FFFFFF
|
||||||
CheckBox.icon.disabledBackground=F2F2F2
|
CheckBox.icon.disabledBackground=F2F2F2
|
||||||
|
CheckBox.icon.focusedBackground=00ffff
|
||||||
|
CheckBox.icon.hoverBackground=ffff00
|
||||||
|
CheckBox.icon.pressedBackground=FFC800
|
||||||
CheckBox.icon.selectedBackground=4D89C9
|
CheckBox.icon.selectedBackground=4D89C9
|
||||||
CheckBox.icon.checkmarkColor=FFFFFF
|
CheckBox.icon.checkmarkColor=FFFFFF
|
||||||
CheckBox.icon.disabledCheckmarkColor=ABABAB
|
CheckBox.icon.disabledCheckmarkColor=ABABAB
|
||||||
|
|||||||
Reference in New Issue
Block a user