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.UNSELECTEDtoFlatTriStateCheckBox.State.INDETERMINATEtoFlatTriStateCheckBox.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.UNSELECTEDtoFlatTriStateCheckBox.State.SELECTEDtoFlatTriStateCheckBox.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 classFlatTriStateCheckBox.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 BooleangetChecked()Returns the state asBoolean.FlatTriStateCheckBox.StategetState()Returns the state asFlatTriStateCheckBox.Stateenum.booleanisAllowIndeterminate()Returns whether indeterminate state is allowed.booleanisAltStateCycleOrder()Returns whether alternative state cycle order should be used.booleanisIndeterminate()Returns whether state is indeterminate.protected booleanisIndeterminateStateSupported()Returns whether the current LaF supports displaying the indeterminate state.protected FlatTriStateCheckBox.StatenextState(FlatTriStateCheckBox.State state)Returns the next state that follows the given state, depending onisAllowIndeterminate()andisAltStateCycleOrder().protected voidpaintComponent(Graphics g)protected voidpaintIndeterminateState(Graphics g)Paints the indeterminate state if the current LaF does not support displaying the indeterminate state.voidsetAllowIndeterminate(boolean allowIndeterminate)Sets whether indeterminate state is allowed.voidsetAltStateCycleOrder(boolean altStateCycleOrder)Sets whether alternative state cycle order should be used.voidsetChecked(Boolean value)Sets the state asBoolean.voidsetIndeterminate(boolean indeterminate)Sets indeterminate state.voidsetSelected(boolean b)voidsetState(FlatTriStateCheckBox.State state)Sets the state asFlatTriStateCheckBox.Stateenum.-
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.Stateenum.Alternatively you can use
getChecked()to get all three states asBooleanorisIndeterminate()to check only for indeterminate state.
-
setState
public void setState(FlatTriStateCheckBox.State state)
Sets the state asFlatTriStateCheckBox.Stateenum.
-
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. Returnsnullif the state isFlatTriStateCheckBox.State.INDETERMINATE.Alternatively you can use
getState()to get state asFlatTriStateCheckBox.Stateenum orisIndeterminate()to check only for indeterminate state.
-
setChecked
public void setChecked(Boolean value)
-
setSelected
public void setSelected(boolean b)
- Overrides:
setSelectedin 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:
paintComponentin 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. Returnstruefor FlatLaf and macOS Aqua.
-
-