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:
java.awt.image.ImageObserver,java.awt.ItemSelectable,java.awt.MenuContainer,java.io.Serializable,javax.accessibility.Accessible,javax.swing.SwingConstants
public class FlatTriStateCheckBox extends javax.swing.JCheckBoxA tri-state check box.The initial state is
FlatTriStateCheckBox.State.INDETERMINATE.By default the third state is allowed and clicking on the checkbox cycles thru all three states. If you want that the user can cycle only thru 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
javax.swing.JCheckBox.AccessibleJCheckBox
-
Nested classes/interfaces inherited from class javax.swing.JToggleButton
javax.swing.JToggleButton.AccessibleJToggleButton, javax.swing.JToggleButton.ToggleButtonModel
-
Nested classes/interfaces inherited from class javax.swing.AbstractButton
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
-
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
-
-
Constructor Summary
Constructors Constructor Description FlatTriStateCheckBox()FlatTriStateCheckBox(java.lang.String text)FlatTriStateCheckBox(java.lang.String text, FlatTriStateCheckBox.State initialState)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.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(java.awt.Graphics g)protected voidpaintIndeterminateState(java.awt.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(java.lang.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.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(java.lang.String text)
-
FlatTriStateCheckBox
public FlatTriStateCheckBox(java.lang.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 java.lang.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(java.lang.Boolean value)
-
setSelected
public void setSelected(boolean b)
- Overrides:
setSelectedin classjavax.swing.AbstractButton
-
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(java.awt.Graphics g)
- Overrides:
paintComponentin classjavax.swing.JComponent
-
paintIndeterminateState
protected void paintIndeterminateState(java.awt.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.
-
-