Class FlatTriStateCheckBox
- All Implemented Interfaces:
ImageObserver
,ItemSelectable
,MenuContainer
,Serializable
,Accessible
,SwingConstants
- Direct Known Subclasses:
FlatThemePreviewSwitches.ZoomTriStateCheckBox
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
to FlatTriStateCheckBox.State.INDETERMINATE
to FlatTriStateCheckBox.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()
returns true
,
the state cycle order is FlatTriStateCheckBox.State.UNSELECTED
to FlatTriStateCheckBox.State.SELECTED
to FlatTriStateCheckBox.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:
-
Nested Class Summary
Nested ClassesNested 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
FieldsModifier and TypeFieldDescriptionprivate boolean
private boolean
private FlatTriStateCheckBox.State
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
ConstructorsConstructorDescriptionFlatTriStateCheckBox
(String text) FlatTriStateCheckBox
(String text, FlatTriStateCheckBox.State initialState) -
Method Summary
Modifier and TypeMethodDescriptionReturns the state asBoolean
.getState()
Returns the state asFlatTriStateCheckBox.State
enum.boolean
Returns whether indeterminate state is allowed.boolean
Returns whether alternative state cycle order should be used.boolean
Returns whether state is indeterminate.protected boolean
Returns whether the current LaF supports displaying the indeterminate state.protected FlatTriStateCheckBox.State
Returns the next state that follows the given state, depending onisAllowIndeterminate()
andisAltStateCycleOrder()
.protected void
protected void
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
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
-
Field Details
-
state
-
allowIndeterminate
private boolean allowIndeterminate -
altStateCycleOrder
private boolean altStateCycleOrder
-
-
Constructor Details
-
FlatTriStateCheckBox
public FlatTriStateCheckBox() -
FlatTriStateCheckBox
-
FlatTriStateCheckBox
-
-
Method Details
-
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
Sets the state asFlatTriStateCheckBox.State
enum. -
nextState
Returns the next state that follows the given state, depending onisAllowIndeterminate()
andisAltStateCycleOrder()
. -
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
-
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
- Overrides:
paintComponent
in classJComponent
-
paintIndeterminateState
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.
-