Class FlatTriStateCheckBox
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.AbstractButton
-
- javax.swing.JToggleButton
-
- javax.swing.JCheckBox
-
- com.formdev.flatlaf.extras.components.FlatTriStateCheckBox
-
- All Implemented Interfaces:
ImageObserver
,ItemSelectable
,MenuContainer
,Serializable
,Accessible
,SwingConstants
public class FlatTriStateCheckBox extends JCheckBox
A tri-state check box.The initial state is
FlatTriStateCheckBox.State.INDETERMINATE
.By default, the third state is allowed and clicking on the checkbox cycles through all three states. If you want that the user can cycle only through two states, disallow intermediate state using
setAllowIndeterminate(boolean)
. Then you can still set the indeterminate state via API if necessary, but the user can not.The default state cycle order is
FlatTriStateCheckBox.State.UNSELECTED
toFlatTriStateCheckBox.State.INDETERMINATE
toFlatTriStateCheckBox.State.SELECTED
. This is the same order as used by macOS, win32, IntelliJ IDEA and on the web as recommended by W3C in Tri-State Checkbox Example).If
isAltStateCycleOrder()
returnstrue
, the state cycle order isFlatTriStateCheckBox.State.UNSELECTED
toFlatTriStateCheckBox.State.SELECTED
toFlatTriStateCheckBox.State.INDETERMINATE
. This order is used by Windows 10 UWP apps.If you prefer the alternative state cycle order for all tri-state check boxes, enable it using:
UIManager.put( "FlatTriStateCheckBox.altStateCycleOrder", true );
To display the third state, this component requires an LaF that supports painting the indeterminate state if client property
"JButton.selectedState"
has the value"indeterminate"
. FlatLaf and macOS Aqua LaF support the third state. For other LaFs a magenta rectangle is painted around the component for the third state.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FlatTriStateCheckBox.State
-
Nested classes/interfaces inherited from class javax.swing.JCheckBox
JCheckBox.AccessibleJCheckBox
-
Nested classes/interfaces inherited from class javax.swing.JToggleButton
JToggleButton.AccessibleJToggleButton, JToggleButton.ToggleButtonModel
-
Nested classes/interfaces inherited from class javax.swing.AbstractButton
AbstractButton.AccessibleAbstractButton, AbstractButton.ButtonChangeListener
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
-
Fields inherited from class javax.swing.JCheckBox
BORDER_PAINTED_FLAT_CHANGED_PROPERTY
-
Fields inherited from class javax.swing.AbstractButton
actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
-
-
Constructor Summary
Constructors Constructor Description FlatTriStateCheckBox()
FlatTriStateCheckBox(String text)
FlatTriStateCheckBox(String text, FlatTriStateCheckBox.State initialState)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Boolean
getChecked()
Returns the state asBoolean
.FlatTriStateCheckBox.State
getState()
Returns the state asFlatTriStateCheckBox.State
enum.boolean
isAllowIndeterminate()
Returns whether indeterminate state is allowed.boolean
isAltStateCycleOrder()
Returns whether alternative state cycle order should be used.boolean
isIndeterminate()
Returns whether state is indeterminate.protected boolean
isIndeterminateStateSupported()
Returns whether the current LaF supports displaying the indeterminate state.protected FlatTriStateCheckBox.State
nextState(FlatTriStateCheckBox.State state)
Returns the next state that follows the given state, depending onisAllowIndeterminate()
andisAltStateCycleOrder()
.protected void
paintComponent(Graphics g)
protected void
paintIndeterminateState(Graphics g)
Paints the indeterminate state if the current LaF does not support displaying the indeterminate state.void
setAllowIndeterminate(boolean allowIndeterminate)
Sets whether indeterminate state is allowed.void
setAltStateCycleOrder(boolean altStateCycleOrder)
Sets whether alternative state cycle order should be used.void
setChecked(Boolean value)
Sets the state asBoolean
.void
setIndeterminate(boolean indeterminate)
Sets indeterminate state.void
setSelected(boolean b)
void
setState(FlatTriStateCheckBox.State state)
Sets the state asFlatTriStateCheckBox.State
enum.-
Methods inherited from class javax.swing.JCheckBox
getAccessibleContext, getUIClassID, isBorderPaintedFlat, paramString, setBorderPaintedFlat, updateUI
-
Methods inherited from class javax.swing.JToggleButton
requestFocus, requestFocusInWindow
-
Methods inherited from class javax.swing.AbstractButton
actionPropertyChanged, addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, configurePropertiesFromAction, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, doClick, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, init, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, isSelected, paintBorder, removeActionListener, removeChangeListener, removeItemListener, removeNotify, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setEnabled, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setModel, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Constructor Detail
-
FlatTriStateCheckBox
public FlatTriStateCheckBox()
-
FlatTriStateCheckBox
public FlatTriStateCheckBox(String text)
-
FlatTriStateCheckBox
public FlatTriStateCheckBox(String text, FlatTriStateCheckBox.State initialState)
-
-
Method Detail
-
getState
public FlatTriStateCheckBox.State getState()
Returns the state asFlatTriStateCheckBox.State
enum.Alternatively you can use
getChecked()
to get all three states asBoolean
orisIndeterminate()
to check only for indeterminate state.
-
setState
public void setState(FlatTriStateCheckBox.State state)
Sets the state asFlatTriStateCheckBox.State
enum.
-
nextState
protected FlatTriStateCheckBox.State nextState(FlatTriStateCheckBox.State state)
Returns the next state that follows the given state, depending onisAllowIndeterminate()
andisAltStateCycleOrder()
.
-
getChecked
public Boolean getChecked()
Returns the state asBoolean
. Returnsnull
if the state isFlatTriStateCheckBox.State.INDETERMINATE
.Alternatively you can use
getState()
to get state asFlatTriStateCheckBox.State
enum orisIndeterminate()
to check only for indeterminate state.
-
setChecked
public void setChecked(Boolean value)
-
setSelected
public void setSelected(boolean b)
- Overrides:
setSelected
in classAbstractButton
-
isIndeterminate
public boolean isIndeterminate()
Returns whether state is indeterminate.
-
setIndeterminate
public void setIndeterminate(boolean indeterminate)
Sets indeterminate state.
-
isAllowIndeterminate
public boolean isAllowIndeterminate()
Returns whether indeterminate state is allowed.This affects only the user when clicking on the checkbox. Setting state to indeterminate via API is always allowed.
-
setAllowIndeterminate
public void setAllowIndeterminate(boolean allowIndeterminate)
Sets whether indeterminate state is allowed.This affects only the user when clicking on the checkbox. Setting state to indeterminate via API is always allowed.
-
isAltStateCycleOrder
public boolean isAltStateCycleOrder()
Returns whether alternative state cycle order should be used.
-
setAltStateCycleOrder
public void setAltStateCycleOrder(boolean altStateCycleOrder)
Sets whether alternative state cycle order should be used.
-
paintComponent
protected void paintComponent(Graphics g)
- Overrides:
paintComponent
in classJComponent
-
paintIndeterminateState
protected void paintIndeterminateState(Graphics g)
Paints the indeterminate state if the current LaF does not support displaying the indeterminate state. The default implementation draws a magenta rectangle around the component.
-
isIndeterminateStateSupported
protected boolean isIndeterminateStateSupported()
Returns whether the current LaF supports displaying the indeterminate state. Returnstrue
for FlatLaf and macOS Aqua.
-
-