Checkbox

When to use
Use checkboxes for yes/no choices or for selecting several items in a group:

When not to use
If only one option in a group can be selected, use radio button:
Incorrect ![]() | Correct ![]() |
If the behavior in the "off" state is unclear from the checkbox label, use two radio buttons instead and label them accordingly:
Incorrect ![]() | Correct ![]() |
How to use
Label on the right
A label accompanies each checkbox and is placed on the right side.
Correct ![]() | Incorrect ![]() |
Long labels
If a label is long, split it into two lines. Use HTML formatting for that. Avoid labels that take more than two lines. See recommendations on writing concise labels below.
Correct ![]() | Incorrect ![]() |
Implementation
Checkboxes in a table
If a checkbox appears in a table, place the label into the column header and do not repeat it on every row:

Implementation
Checkboxes are rendered in tables with BooleanTableCellRenderer
and edited with DefaultCellEditor(JCheckBox)
implementation. For any column that should be rendered as a checkbox, set both a renderer and editor for consistency. The type of data in the correspondent column of the Table
model should either be Boolean
or String
containing true
or false
.
Three-state checkbox
Status of children
In a group of options, use the parent checkbox to show the status of its children. The state of the parent checkbox can be checked, indeterminate or unchecked. When a user clicks an indeterminate checkbox for the first time, the whole group becomes checked. The second click unchecks the whole group.

Implementation
The three-state checkbox is represented by the ThreeStateCheckBox
class which represents its state with the ThreeStateCheckBox.State
enum containing SELECTED, NOT_SELECTED, DONT_CARE
states.
Download status
An indeterminate checkbox can also show the download status. In the example below, a remote repository with Repositories "tools-base" and "contrib" are being loaded. When loading is finished, the indeterminate checkbox will be replaced with the checked checkbox if there are commits, or an unchecked checkbox if there are no commits.

Implementation
In a table, the three-state checkbox is represented by ThreeStateCheckBoxRenderer
that provides both TableCellRenderer
and TableEditor
. It accepts Boolean
type in the column being supplied by the TableModel
and becomes DONT_CARE
when the value in the cell is null. Otherwise, it becomes SELECTED
for Boolean.TRUE
, and NOT_SELECTED
for Boolean.FALSE
.
Writing guidelines
Use sentence-style capitalization:
Correct ![]() | Incorrect ![]() |
Do not use ending punctuation:
Correct ![]() | Incorrect ![]() |
Use the imperative form of verbs:
Correct ![]() | Incorrect ![]() |
Do not use negation in labels as it complicates understanding:
Correct ![]() | Incorrect ![]() |
Make labels short and intelligible. See Writing short and clear.
How to layout
Follow the guidelines for checkboxes and radio buttons layout.