Lists, Tables, and Trees
Striped Background Style
Lists, tables, and trees all support an optional striped background style. The striped style
is selected by setting the appropriate client property (JList.style
,
JTable.style
, or JTree.style
) to the value striped
. See the note
below about cell renderer issues, which affect the ability to display a striped
background.
Additional steps may be needed to properly display a JTable using a striped background
in a space that is larger than the table itself. Normally, in that situation, it is
best if the stripes fill the space. However, because the stripes are painted by the
JTable, they will not extend beyond the bounds of the table, which by default are the bounds of
the table rows and columns. The solution is to enable automatic column resizing
(using setAutoResizeMode()
) and filling the viewport height (using setFillsViewportHeight()
).
In this situation, it may be useful to limit the width of individual columns by
disabling resizing (using setResizable()
)
or setting a maximum width (using setMaxWidth()
) on the
column. The combination of automatic column resizing and non-resizable or limited width columns
allows the table to extend beyond the columns, which enables the striped background to fill
the width of the space.
SideBar List and Tree Style
VAqua supports an optional sidebar style for lists and trees. This style mimics the style of the Finder sidebar.
The sidebar style
is selected by setting the client property JList.style
or JTree.style
to sideBar
. See the note
below about cell renderer issues, which affect the ability to display the sidebar
style. The sidebar style does not support wrapped lists.
Inset View Style
VAqua supports the inset view style introduced in macOS 11, in which the selection highlight
uses rounded corners.
The inset view style is used automatically for sidebar style lists and trees.
Otherwise, the inset view style is selected by
setting the appropriate client property (JList.viewStyle
,
JTable.viewStyle
, or JTree.viewStyle
) to the value inset
.
The inset view style requires adding margins to the container, which is supported
automatically on lists and trees, but not on tables. To use the inset view style with
a table requires an extended JTable
implementation JTableWithMargins
,
available in the VAquaClient library.
Filled Tree Cells
Normally, a tree cell renderer will be sized at the preferred size of the renderer component.
VAqua supports an option to expand tree cells to fill the remaining width of the row.
This option is selected by setting the client property JTree.isCellFilled
to (Boolean) true
.
This option does not currently affect the size of the cell editor.
Cell Renderer Issues
Several background styles supported by VAqua, including some default styles, require the willing or unwilling cooperation of the cell renderers to avoid painting over the style-created background (for example, the stripes of a striped style, the selected row background, or the sidebar custom background). In general, a cell renderer should avoid painting a background (a translucent background might be acceptable). In some cases, VAqua will override the cell renderer background color to force it to be consistent with the overall background. Direct use of the default cell renderers should work properly.