Interface FlatClientProperties


  • public interface FlatClientProperties
    Defines/documents own client properties used in FlatLaf.
    • Method Summary

      Static Methods 
      Modifier and Type Method Description
      static <T> T clientProperty​(javax.swing.JComponent c, java.lang.String key, T defaultValue, java.lang.Class<T> type)
      Returns the value of the specified client property if it is an instance of the specified type.
      static boolean clientPropertyBoolean​(javax.swing.JComponent c, java.lang.String key, boolean defaultValue)
      Checks whether a client property of a component is a boolean and returns its value.
      static java.lang.Boolean clientPropertyBooleanStrict​(javax.swing.JComponent c, java.lang.String key, java.lang.Boolean defaultValue)
      Checks whether a client property of a component is a Boolean and returns its value.
      static java.awt.Color clientPropertyColor​(javax.swing.JComponent c, java.lang.String key, java.awt.Color defaultValue)
      Checks whether a client property of a component is a color and returns its value.
      static boolean clientPropertyEquals​(javax.swing.JComponent c, java.lang.String key, java.lang.Object value)
      Checks whether a client property of a component has the given value.
      static int clientPropertyInt​(javax.swing.JComponent c, java.lang.String key, int defaultValue)
      Checks whether a client property of a component is an integer and returns its value.
    • Field Detail

      • BUTTON_TYPE_SQUARE

        static final java.lang.String BUTTON_TYPE_SQUARE
        Paint the button with square edges.

        Components JButton and JToggleButton

        See Also:
        BUTTON_TYPE, Constant Field Values
      • BUTTON_TYPE_ROUND_RECT

        static final java.lang.String BUTTON_TYPE_ROUND_RECT
        Paint the button with round edges.

        Components JButton and JToggleButton

        See Also:
        BUTTON_TYPE, Constant Field Values
      • BUTTON_TYPE_TAB

        static final java.lang.String BUTTON_TYPE_TAB
        Paint the toggle button in tab style.

        Components JToggleButton

        See Also:
        BUTTON_TYPE, Constant Field Values
      • BUTTON_TYPE_HELP

        static final java.lang.String BUTTON_TYPE_HELP
        Paint a help button (circle with question mark).

        Components JButton

        See Also:
        BUTTON_TYPE, Constant Field Values
      • BUTTON_TYPE_TOOLBAR_BUTTON

        static final java.lang.String BUTTON_TYPE_TOOLBAR_BUTTON
        Paint the button in toolbar style.

        Components JButton and JToggleButton

        See Also:
        BUTTON_TYPE, Constant Field Values
      • BUTTON_TYPE_BORDERLESS

        static final java.lang.String BUTTON_TYPE_BORDERLESS
        Paint the button without a border in the unfocused state.

        Components JButton and JToggleButton

        Since:
        1.2
        See Also:
        BUTTON_TYPE, Constant Field Values
      • SQUARE_SIZE

        static final java.lang.String SQUARE_SIZE
        Specifies whether the button preferred size will be made square (quadratically).

        Components JButton and JToggleButton
        Value type Boolean

        See Also:
        Constant Field Values
      • SELECTED_STATE_INDETERMINATE

        static final java.lang.String SELECTED_STATE_INDETERMINATE
        Paint an indeterminate state on a checkbox.
        See Also:
        SELECTED_STATE, Constant Field Values
      • STYLE

        static final java.lang.String STYLE
        Specifies the style of a component as String in CSS syntax ("key1: value1; key2: value2; ...") or as Map<String, Object> with binary values.

        The keys are the same as used in UI defaults, but without component type prefix. E.g. for UI default Slider.thumbSize use key thumbSize.

        The syntax of the CSS values is the same as used in FlatLaf properties files (https://www.formdev.com/flatlaf/properties-files/), but some features are not supported (e.g. variables). When using a map, the values are not parsed from a string. They must be binary.

        Components JComponent
        Value type String or Map<String, Object>

        Since:
        2
        See Also:
        Constant Field Values
      • STYLE_CLASS

        static final java.lang.String STYLE_CLASS
        Specifies the style class(es) of a component as String (single class or multiple classes separated by space characters) or as String[] or List<String> (multiple classes).

        The style rules must be defined in UI defaults either as strings (in CSS syntax) or as Map<String, Object> (with binary values). The key must be in syntax: [style]type.styleClass, where the type is optional. E.g. in FlatLaf properties file:

        
         [style]Button.primary = borderColor: #08f; background: #08f; foreground: #fff
         [style].secondary = borderColor: #0f8; background: #0f8
         
        or in Java code:
        
         UIManager.put( "[style]Button.primary", "borderColor: #08f; background: #08f; foreground: #fff" );
         UIManager.put( "[style].secondary", "borderColor: #0f8; background: #0f8" );
         
        The rule "Button.primary" can be applied to buttons only. The rule ".secondary" can be applied to any component.

        To have similar behavior as in CSS, first the rule without type is applied, then the rule with type. E.g. setting style class to "foo" on a JButton uses rules from UI default keys "[style].foo" and "[style]Button.foo".

        Components JComponent
        Value type String, String[] or List<String>

        Since:
        2
        See Also:
        Constant Field Values
      • MINIMUM_WIDTH

        static final java.lang.String MINIMUM_WIDTH
        Specifies minimum width of a component.

        Component JButton, JToggleButton, JComboBox, JSpinner and JTextComponent
        Value type Integer

        See Also:
        Constant Field Values
      • MINIMUM_HEIGHT

        static final java.lang.String MINIMUM_HEIGHT
        Specifies minimum height of a component.

        Component JButton and JToggleButton
        Value type Integer

        See Also:
        Constant Field Values
      • COMPONENT_ROUND_RECT

        static final java.lang.String COMPONENT_ROUND_RECT
        Paint the component with round edges.

        Components JComboBox, JSpinner, JTextField, JFormattedTextField and JPasswordField
        Value type Boolean

        See Also:
        Constant Field Values
      • OUTLINE

        static final java.lang.String OUTLINE
        Specifies the outline color of the component border.

        Components JButton, JComboBox, JFormattedTextField, JPasswordField, JScrollPane, JSpinner, JTextField and JToggleButton
        Value type String or Color or Color[2]
        Allowed Values OUTLINE_ERROR, OUTLINE_WARNING, any color (type Color) or an array of two colors (type Color[2]) where the first color is for focused state and the second for unfocused state

        See Also:
        Constant Field Values
      • OUTLINE_ERROR

        static final java.lang.String OUTLINE_ERROR
        Paint the component border in another color (usually reddish) to indicate an error.
        See Also:
        OUTLINE, Constant Field Values
      • OUTLINE_WARNING

        static final java.lang.String OUTLINE_WARNING
        Paint the component border in another color (usually yellowish) to indicate a warning.
        See Also:
        OUTLINE, Constant Field Values
      • COMPONENT_FOCUS_OWNER

        static final java.lang.String COMPONENT_FOCUS_OWNER
        Specifies a callback that is invoked to check whether a component is permanent focus owner. Used to paint focus indicators.

        May be useful in special cases for custom components.

        Use a Predicate that receives the component as parameter:

        
         myComponent.putClientProperty( "JComponent.focusOwner",
             (Predicate<JComponent>) c -> {
                 return ...; // check here
             } );
         

        Component JComponent
        Value type Predicate<javax.swing.JComponent>

        See Also:
        Constant Field Values
      • COMPONENT_TITLE_BAR_CAPTION

        static final java.lang.String COMPONENT_TITLE_BAR_CAPTION
        Specifies whether a component shown in a window title bar area should behave as caption (left-click allows moving window, right-click shows window system menu). The caption component does not receive mouse pressed/released/clicked/dragged events, but it gets mouse entered/exited/moved events.

        Since 3.4, this client property also supports using a function that can check whether a given location in the component should behave as caption. Useful for components that do not use mouse input on whole component bounds.

        
         myComponent.putClientProperty( "JComponent.titleBarCaption",
             (Function<Point, Boolean>) pt -> {
                 // parameter pt contains mouse location (in myComponent coordinates)
                 // return true if the component is not interested in mouse input at the given location
                 // return false if the component wants process mouse input at the given location
                 // return null if the component children should be checked
                 return ...; // check here
             } );
         
        Warning:
        • This function is invoked often when mouse is moved over window title bar area and should therefore return quickly.
        • This function is invoked on 'AWT-Windows' thread (not 'AWT-EventQueue' thread) while processing Windows messages. It must not change any component property or layout because this could cause a dead lock.

        Component JComponent
        Value type Boolean or Function<Point, Boolean>

        Since:
        2.5
        See Also:
        Constant Field Values
      • FULL_WINDOW_CONTENT_BUTTONS_PLACEHOLDER

        static final java.lang.String FULL_WINDOW_CONTENT_BUTTONS_PLACEHOLDER
        Marks the panel as placeholder for the iconfify/maximize/close buttons in fullWindowContent mode. See FULL_WINDOW_CONTENT.

        If fullWindowContent mode is enabled, the preferred size of the panel is equal to the size of the iconfify/maximize/close buttons. Otherwise is is 0,0.

        You're responsible to layout that panel at the top-left or top-right corner, depending on platform, where the iconfify/maximize/close buttons are located.

        Syntax of the value string is: "win|mac [horizontal|vertical] [zeroInFullScreen] [leftToRight|rightToLeft]".

        The string must start with "win" (for Windows or Linux) or with "mac" (for macOS) and specifies the platform where the placeholder should be used. On macOS, you need the placeholder in the top-left corner, but on Windows/Linux you need it in the top-right corner. So if your application supports fullWindowContent mode on both platforms, you can add two placeholders to your layout and FlatLaf automatically uses only one of them. The other gets size 0,0.

        Optionally, you can append following options to the value string (separated by space characters):

        • "horizontal" - preferred height is zero
        • "vertical" - preferred width is zero
        • "zeroInFullScreen" - in full-screen mode on macOS, preferred size is 0,0
        • "leftToRight" - in right-to-left component orientation, preferred size is 0,0
        • "rightToLeft" - in left-to-right component orientation, preferred size is 0,0
        Example for adding placeholder to top-left corner on macOS:
        
         JPanel placeholder = new JPanel();
         placeholder.putClientProperty( FlatClientProperties.FULL_WINDOW_CONTENT_BUTTONS_PLACEHOLDER, "mac" );
        
         JToolBar toolBar = new JToolBar();
         // add tool bar items
        
         JPanel toolBarPanel = new JPanel( new BorderLayout() );
         toolBarPanel.add( placeholder, BorderLayout.WEST );
         toolBarPanel.add( toolBar, BorderLayout.CENTER );
        
         frame.getContentPane().add( toolBarPanel, BorderLayout.NORTH );
         
        Or add placeholder as first item to the tool bar:
        
         JPanel placeholder = new JPanel();
         placeholder.putClientProperty( FlatClientProperties.FULL_WINDOW_CONTENT_BUTTONS_PLACEHOLDER, "mac" );
        
         JToolBar toolBar = new JToolBar();
         toolBar.add( placeholder );
         // add tool bar items
        
         frame.getContentPane().add( toolBar, BorderLayout.NORTH );
         
        If a tabbed pane is located at the top, you can add the placeholder as leading component to that tabbed pane:
        
         JPanel placeholder = new JPanel();
         placeholder.putClientProperty( FlatClientProperties.FULL_WINDOW_CONTENT_BUTTONS_PLACEHOLDER, "mac" );
        
         tabbedPane.putClientProperty( FlatClientProperties.TABBED_PANE_LEADING_COMPONENT, placeholder );
         

        Component JPanel
        Value type String

        Since:
        3.4
        See Also:
        Constant Field Values
      • POPUP_BORDER_CORNER_RADIUS

        static final java.lang.String POPUP_BORDER_CORNER_RADIUS
        Specifies the popup border corner radius if the component is shown in a popup or if the component is the owner of another component that is shown in a popup.

        Note that this is not available on all platforms since it requires special support. Supported platforms:

        • Windows 11: Only two corner radiuses are supported by the OS: DWMWCP_ROUND is 8px and DWMWCP_ROUNDSMALL is 4px. If this value is 1 - 4, then DWMWCP_ROUNDSMALL is used. If it is >= 5, then DWMWCP_ROUND is used.
        • macOS (10.14 and later): Any corner radius is supported.
        Component JComponent
        Value type Integer
        Since:
        3.1
        See Also:
        Constant Field Values
      • POPUP_ROUNDED_BORDER_WIDTH

        static final java.lang.String POPUP_ROUNDED_BORDER_WIDTH
        Specifies the popup rounded border width if the component is shown in a popup or if the component is the owner of another component that is shown in a popup.

        Only used if popup uses rounded border.

        Note that this is not available on all platforms since it requires special support. Supported platforms:

        • macOS (10.14 and later)
        Component JComponent
        Value type Integer or Float
        Since:
        3.3
        See Also:
        Constant Field Values
      • POPUP_DROP_SHADOW_PAINTED

        static final java.lang.String POPUP_DROP_SHADOW_PAINTED
        Specifies whether a drop shadow is painted if the component is shown in a popup or if the component is the owner of another component that is shown in a popup.

        Component JComponent
        Value type Boolean

        See Also:
        Constant Field Values
      • POPUP_FORCE_HEAVY_WEIGHT

        static final java.lang.String POPUP_FORCE_HEAVY_WEIGHT
        Specifies whether a heavy weight window should be used if the component is shown in a popup or if the component is the owner of another component that is shown in a popup.

        Component JComponent
        Value type Boolean

        See Also:
        Constant Field Values
      • PROGRESS_BAR_LARGE_HEIGHT

        static final java.lang.String PROGRESS_BAR_LARGE_HEIGHT
        Specifies whether the progress bar has always the larger height even if no string is painted.

        Component JProgressBar
        Value type Boolean

        See Also:
        Constant Field Values
      • PROGRESS_BAR_SQUARE

        static final java.lang.String PROGRESS_BAR_SQUARE
        Specifies whether the progress bar is paint with square edges.

        Component JProgressBar
        Value type Boolean

        See Also:
        Constant Field Values
      • USE_WINDOW_DECORATIONS

        static final java.lang.String USE_WINDOW_DECORATIONS
        Specifies whether FlatLaf native window decorations should be used for JFrame or JDialog.

        Setting this enables/disables using FlatLaf native window decorations for the window that contains the root pane.

        This client property has lower priority than system property FlatSystemProperties.USE_WINDOW_DECORATIONS, but higher priority than UI default TitlePane.useWindowDecorations.

        (requires Window 10)

        Component JRootPane
        Value type Boolean

        Since:
        1.1.1
        See Also:
        Constant Field Values
      • MENU_BAR_EMBEDDED

        static final java.lang.String MENU_BAR_EMBEDDED
        Specifies whether the menu bar is embedded into the window title pane if window decorations are enabled.

        Setting this enables/disables embedding for the window that contains the root pane.

        This client property has lower priority than system property FlatSystemProperties.MENUBAR_EMBEDDED, but higher priority than UI default TitlePane.menuBarEmbedded.

        (requires Window 10)

        Component JRootPane
        Value type Boolean

        See Also:
        Constant Field Values
      • FULL_WINDOW_CONTENT

        static final java.lang.String FULL_WINDOW_CONTENT
        Specifies whether the content pane (and the glass pane) should be extended into the window title bar area (requires enabled window decorations). Default is false.

        On macOS, use client property apple.awt.fullWindowContent (see macOS Full window content).

        Setting this enables/disables full window content for the JFrame or JDialog that contains the root pane.

        If true, the content pane (and the glass pane) is extended into the title bar area. The window icon and title are hidden. Only the iconfify/maximize/close buttons stay visible in the upper right corner (and overlap the content pane).

        The user can left-click-and-drag on the title bar area to move the window, except when clicking on a component that processes mouse events (e.g. buttons or menus).

        Component JRootPane
        Value type Boolean

        Since:
        3.4
        See Also:
        Constant Field Values
      • FULL_WINDOW_CONTENT_BUTTONS_BOUNDS

        static final java.lang.String FULL_WINDOW_CONTENT_BUTTONS_BOUNDS
        Contains the current bounds of the iconfify/maximize/close buttons (in root pane coordinates) if fullWindowContent mode is enabled. Otherwise its value is null.

        Note: Do not set this client property. It is set by FlatLaf.

        Component JRootPane
        Value type Rectangle

        Since:
        3.4
        See Also:
        Constant Field Values
      • TITLE_BAR_SHOW_ICON

        static final java.lang.String TITLE_BAR_SHOW_ICON
        Specifies whether the window icon should be shown in the window title bar (requires enabled window decorations). Default is UI property TitlePane.showIcon.

        Setting this shows/hides the windows icon for the JFrame or JDialog that contains the root pane.

        This client property has higher priority than UI default TitlePane.showIcon.

        (requires Window 10)

        Component JRootPane
        Value type Boolean

        Since:
        2
        See Also:
        Constant Field Values
      • TITLE_BAR_SHOW_TITLE

        static final java.lang.String TITLE_BAR_SHOW_TITLE
        Specifies whether the window title should be shown in the window title bar (requires enabled window decorations). Default is true.

        Setting this shows/hides the windows title for the JFrame or JDialog that contains the root pane.

        Component JRootPane
        Value type Boolean

        Since:
        3
        See Also:
        Constant Field Values
      • TITLE_BAR_SHOW_ICONIFFY

        static final java.lang.String TITLE_BAR_SHOW_ICONIFFY
        Specifies whether the "iconify" button should be shown in the window title bar (requires enabled window decorations). Default is true.

        Setting this shows/hides the "iconify" button for the JFrame that contains the root pane.

        Component JRootPane
        Value type Boolean

        Since:
        3
        See Also:
        Constant Field Values
      • TITLE_BAR_SHOW_MAXIMIZE

        static final java.lang.String TITLE_BAR_SHOW_MAXIMIZE
        Specifies whether the "maximize/restore" button should be shown in the window title bar (requires enabled window decorations). Default is true.

        Setting this shows/hides the "maximize/restore" button for the JFrame that contains the root pane.

        Component JRootPane
        Value type Boolean

        Since:
        3
        See Also:
        Constant Field Values
      • TITLE_BAR_SHOW_CLOSE

        static final java.lang.String TITLE_BAR_SHOW_CLOSE
        Specifies whether the "close" button should be shown in the window title bar (requires enabled window decorations). Default is true.

        Setting this shows/hides the "close" button for the JFrame or JDialog that contains the root pane.

        Component JRootPane
        Value type Boolean

        Since:
        3
        See Also:
        Constant Field Values
      • TITLE_BAR_BACKGROUND

        static final java.lang.String TITLE_BAR_BACKGROUND
        Background color of window title bar (requires enabled window decorations).

        (requires Window 10)

        Component JRootPane
        Value type Color

        Since:
        1.1.2
        See Also:
        Constant Field Values
      • TITLE_BAR_FOREGROUND

        static final java.lang.String TITLE_BAR_FOREGROUND
        Foreground color of window title bar (requires enabled window decorations).

        (requires Window 10)

        Component JRootPane
        Value type Color

        Since:
        1.1.2
        See Also:
        Constant Field Values
      • GLASS_PANE_FULL_HEIGHT

        static final java.lang.String GLASS_PANE_FULL_HEIGHT
        Specifies whether the glass pane should have full height and overlap the title bar, if FlatLaf window decorations are enabled. Default is false.

        Component JRootPane
        Value type Boolean

        Since:
        3.1
        See Also:
        Constant Field Values
      • WINDOW_STYLE

        static final java.lang.String WINDOW_STYLE
        Specifies the style of the window title bar. Besides the default title bar style, you can use a Utility-style title bar, which is smaller than the default title bar.

        On Windows 10/11, this requires FlatLaf window decorations. On macOS, Java supports this out of the box.

        Note that this client property must be set before the window becomes displayable. Otherwise, an IllegalComponentStateException is thrown.

        Component JRootPane
        Value type String
        Allowed Values WINDOW_STYLE_SMALL

        Since:
        3.2
        See Also:
        Constant Field Values
      • WINDOW_STYLE_SMALL

        static final java.lang.String WINDOW_STYLE_SMALL
        The window has Utility-style title bar, which is smaller than default title bar.

        This is the same as using Window.setType(java.awt.Window.Type)( Window.Type.UTILITY ).

        Since:
        3.2
        See Also:
        WINDOW_STYLE, Constant Field Values
      • SCROLL_BAR_SHOW_BUTTONS

        static final java.lang.String SCROLL_BAR_SHOW_BUTTONS
        Specifies whether the decrease/increase arrow buttons of a scrollbar are shown.

        Component JScrollBar or JScrollPane
        Value type Boolean

        See Also:
        Constant Field Values
      • SCROLL_PANE_SMOOTH_SCROLLING

        static final java.lang.String SCROLL_PANE_SMOOTH_SCROLLING
        Specifies whether the scroll pane uses smooth scrolling.

        Component JScrollPane
        Value type Boolean

        See Also:
        Constant Field Values
      • SPLIT_PANE_EXPANDABLE_SIDE

        static final java.lang.String SPLIT_PANE_EXPANDABLE_SIDE
        Specifies what side of the spilt pane is allowed to expand via one-touch expanding arrow buttons. Requires that one-touch expanding is enabled with JSplitPane.setOneTouchExpandable(boolean).

        Component JSplitPane
        Value type String
        Allowed Values SPLIT_PANE_EXPANDABLE_SIDE_LEFT or SPLIT_PANE_EXPANDABLE_SIDE_RIGHT

        Since:
        2.2
        See Also:
        Constant Field Values
      • TABBED_PANE_SHOW_TAB_SEPARATORS

        static final java.lang.String TABBED_PANE_SHOW_TAB_SEPARATORS
        Specifies whether separators are shown between tabs.

        Component JTabbedPane
        Value type Boolean

        See Also:
        Constant Field Values
      • TABBED_PANE_SHOW_CONTENT_SEPARATOR

        static final java.lang.String TABBED_PANE_SHOW_CONTENT_SEPARATOR
        Specifies whether the separator between tabs area and content area should be shown.

        Component JTabbedPane
        Value type Boolean

        See Also:
        Constant Field Values
      • TABBED_PANE_HAS_FULL_BORDER

        static final java.lang.String TABBED_PANE_HAS_FULL_BORDER
        Specifies whether a full border is painted around a tabbed pane.

        Component JTabbedPane
        Value type Boolean

        See Also:
        Constant Field Values
      • TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB

        static final java.lang.String TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB
        Specifies whether the tab area should be hidden if it contains only one tab.

        Component JTabbedPane
        Value type Boolean

        See Also:
        Constant Field Values
      • TABBED_PANE_MINIMUM_TAB_WIDTH

        static final java.lang.String TABBED_PANE_MINIMUM_TAB_WIDTH
        Specifies the minimum width of a tab.

        Component JTabbedPane or tab content components (see JTabbedPane.setComponentAt(int, java.awt.Component))
        Value type Integer

        See Also:
        Constant Field Values
      • TABBED_PANE_MAXIMUM_TAB_WIDTH

        static final java.lang.String TABBED_PANE_MAXIMUM_TAB_WIDTH
        Specifies the maximum width of a tab.

        Applied only if tab does not have a custom tab component (see JTabbedPane.setTabComponentAt(int, java.awt.Component)).

        Component JTabbedPane or tab content components (see JTabbedPane.setComponentAt(int, java.awt.Component))
        Value type Integer

        See Also:
        Constant Field Values
      • TABBED_PANE_TAB_INSETS

        static final java.lang.String TABBED_PANE_TAB_INSETS
        Specifies the insets of a tab.

        Component JTabbedPane or tab content components (see JTabbedPane.setComponentAt(int, java.awt.Component))
        Value type Insets

        See Also:
        TABBED_PANE_TAB_HEIGHT, Constant Field Values
      • TABBED_PANE_TAB_AREA_INSETS

        static final java.lang.String TABBED_PANE_TAB_AREA_INSETS
        Specifies the insets of the tab area.

        Component JTabbedPane
        Value type Insets

        See Also:
        Constant Field Values
      • TABBED_PANE_TAB_CLOSABLE

        static final java.lang.String TABBED_PANE_TAB_CLOSABLE
        Specifies whether tabs are closable. If set to true on a tabbed pane component, all tabs in that tabbed pane are closable. To make individual tabs closable, set it to true on a tab content component.

        Note that you have to specify a callback (see TABBED_PANE_TAB_CLOSABLE) that is invoked when the user clicks a tab close button. The callback is responsible for closing the tab.

        Component JTabbedPane or tab content components (see JTabbedPane.setComponentAt(int, java.awt.Component))
        Value type Boolean

        See Also:
        TABBED_PANE_TAB_CLOSE_CALLBACK, Constant Field Values
      • TABBED_PANE_TAB_CLOSE_TOOLTIPTEXT

        static final java.lang.String TABBED_PANE_TAB_CLOSE_TOOLTIPTEXT
        Specifies the tooltip text used for tab close buttons.

        Component JTabbedPane or tab content components (see JTabbedPane.setComponentAt(int, java.awt.Component))
        Value type String

        See Also:
        TABBED_PANE_TAB_CLOSABLE, Constant Field Values
      • TABBED_PANE_TAB_CLOSE_CALLBACK

        static final java.lang.String TABBED_PANE_TAB_CLOSE_CALLBACK
        Specifies the callback that is invoked when a tab close button is clicked. The callback is responsible for closing the tab.

        Either use a IntConsumer that receives the tab index as parameter:

        
         myTabbedPane.putClientProperty( "JTabbedPane.tabCloseCallback",
             (IntConsumer) tabIndex -> {
                 // close tab here
             } );
         
        Or use a BiConsumer<javax.swing.JTabbedPane, Integer> that receives the tabbed pane and the tab index as parameters:
        
         myTabbedPane.putClientProperty( "JTabbedPane.tabCloseCallback",
             (BiConsumer<JTabbedPane, Integer>) (tabbedPane, tabIndex) -> {
                 // close tab here
             } );
         
        If you need to check whether a modifier key (e.g. Alt or Shift) was pressed while the user clicked the tab close button, use EventQueue.getCurrentEvent() to get current event, check whether it is a MouseEvent and invoke its methods. E.g.
        
         AWTEvent e = EventQueue.getCurrentEvent();
         boolean shift = (e instanceof MouseEvent) ? ((MouseEvent)e).isShiftDown() : false;
         

        Component JTabbedPane or tab content components (see JTabbedPane.setComponentAt(int, java.awt.Component))
        Value type IntConsumer or BiConsumer<javax.swing.JTabbedPane, Integer>

        See Also:
        TABBED_PANE_TAB_CLOSABLE, Constant Field Values
      • TABBED_PANE_POLICY_AS_NEEDED_SINGLE

        static final java.lang.String TABBED_PANE_POLICY_AS_NEEDED_SINGLE
        Display single button only when needed.

        If scroll button placement is trailing, then this option is ignored and both buttons are shown or hidden as needed.

        See Also:
        TABBED_PANE_SCROLL_BUTTONS_POLICY, Constant Field Values
      • TABBED_PANE_PLACEMENT_BOTH

        static final java.lang.String TABBED_PANE_PLACEMENT_BOTH
        The forward/backward scroll arrow buttons are placed on both sides of the tab area. The backward scroll button at the left/top side. The forward scroll button at the right/bottom side.
        See Also:
        TABBED_PANE_SCROLL_BUTTONS_PLACEMENT, Constant Field Values
      • TABBED_PANE_TAB_ALIGNMENT

        static final java.lang.String TABBED_PANE_TAB_ALIGNMENT
        Specifies the horizontal alignment of the tab title and icon.

        Component JTabbedPane or tab content components (see JTabbedPane.setComponentAt(int, java.awt.Component))
        Value type Integer or String
        Allowed Values SwingConstants.LEADING, SwingConstants.TRAILING, SwingConstants.CENTER (default), TABBED_PANE_ALIGN_LEADING, TABBED_PANE_ALIGN_TRAILING or TABBED_PANE_ALIGN_CENTER (default)

        See Also:
        Constant Field Values
      • TABBED_PANE_TAB_WIDTH_MODE_COMPACT

        static final java.lang.String TABBED_PANE_TAB_WIDTH_MODE_COMPACT
        Unselected tabs are smaller because they show only the tab icon, but no tab title. Selected tabs show both.
        See Also:
        TABBED_PANE_TAB_WIDTH_MODE, Constant Field Values
      • TABBED_PANE_TAB_ICON_PLACEMENT

        static final java.lang.String TABBED_PANE_TAB_ICON_PLACEMENT
        Specifies the tab icon placement (relative to tab title).

        Component JTabbedPane
        Value type Integer
        Allowed Values SwingConstants.LEADING (default), SwingConstants.TRAILING, SwingConstants.TOP or SwingConstants.BOTTOM

        See Also:
        Constant Field Values
      • TABBED_PANE_TAB_ROTATION_AUTO

        static final java.lang.String TABBED_PANE_TAB_ROTATION_AUTO
        Tabs are rotated depending on tab placement.

        For top and bottom tab placement, the tabs are not rotated.
        For left tab placement, the tabs are rotated counter-clockwise.
        For right tab placement, the tabs are rotated clockwise.

        Since:
        3.3
        See Also:
        TABBED_PANE_TAB_ROTATION, Constant Field Values
      • TABBED_PANE_LEADING_COMPONENT

        static final java.lang.String TABBED_PANE_LEADING_COMPONENT
        Specifies a component that will be placed at the leading edge of the tabs area.

        For top and bottom tab placement, the laid out component size will be the preferred component width and the tab area height.
        For left and right tab placement, the laid out component size will be the tab area width and the preferred component height.

        Component JTabbedPane
        Value type Component

        See Also:
        Constant Field Values
      • TABBED_PANE_TRAILING_COMPONENT

        static final java.lang.String TABBED_PANE_TRAILING_COMPONENT
        Specifies a component that will be placed at the trailing edge of the tabs area.

        For top and bottom tab placement, the laid out component size will be the available horizontal space (minimum is preferred component width) and the tab area height.
        For left and right tab placement, the laid out component size will be the tab area width and the available vertical space (minimum is preferred component height).

        Component JTabbedPane
        Value type Component

        See Also:
        Constant Field Values
      • SELECT_ALL_ON_FOCUS_POLICY_ONCE

        static final java.lang.String SELECT_ALL_ON_FOCUS_POLICY_ONCE
        Select all text when the text component gains focus for the first time and selection was not modified (is at end of text). This is the default.
        See Also:
        SELECT_ALL_ON_FOCUS_POLICY, Constant Field Values
      • PLACEHOLDER_TEXT

        static final java.lang.String PLACEHOLDER_TEXT
        Placeholder text that is only painted if the text field is empty.

        Component JTextField (and subclasses) or JComboBox
        Value type String

        See Also:
        Constant Field Values
      • TEXT_FIELD_PADDING

        static final java.lang.String TEXT_FIELD_PADDING
        Specifies the padding of the text. This changes the location and size of the text view within the component bounds, but does not affect the size of the component.

        Component JTextField (and subclasses)
        Value type Insets

        Since:
        1.4
        See Also:
        Constant Field Values
      • TEXT_FIELD_LEADING_ICON

        static final java.lang.String TEXT_FIELD_LEADING_ICON
        Specifies an icon that will be placed at the leading edge of the text field.

        Component JTextField (and subclasses)
        Value type Icon

        Since:
        2
        See Also:
        Constant Field Values
      • TEXT_FIELD_TRAILING_ICON

        static final java.lang.String TEXT_FIELD_TRAILING_ICON
        Specifies an icon that will be placed at the trailing edge of the text field.

        Component JTextField (and subclasses)
        Value type Icon

        Since:
        2
        See Also:
        Constant Field Values
      • TEXT_FIELD_LEADING_COMPONENT

        static final java.lang.String TEXT_FIELD_LEADING_COMPONENT
        Specifies a component that will be placed at the leading edge of the text field.

        The component will be positioned inside and aligned to the visible text field border. There is no gap between the visible border and the component. The laid out component size will be the preferred component width and the inner text field height.

        The component should be not opaque because the text field border is painted slightly inside the usually visible border in some cases. E.g. when focused (in some themes) or when an outline color is specified (see OUTLINE).

        The component is prepared in the following way:

        • Component client property STYLE_CLASS is set to inTextField.
        • If component is a button or toggle button, client property BUTTON_TYPE is set to BUTTON_TYPE_TOOLBAR_BUTTON and button cursor is set to default cursor (if not set).
        • If component is a toolbar, client property STYLE_CLASS is set to inTextField on all toolbar children and toolbar cursor is set to default cursor (if not set).
        Because text fields use the text cursor by default and the cursor is inherited by child components, it may be necessary to explicitly set component cursor if you e.g. need the default arrow cursor. E.g. comp.setCursor( Cursor.getDefaultCursor() ).

        Styling is used to modify insets/margins and appearance of buttons and toolbars so that they fit nicely into the text field and do not increase text field height. See styles [style]Button.inTextField and [style]ToolBar.inTextField in Flat[Light|Dark]Laf.properties.

        Component JTextField (and subclasses)
        Value type JComponent

        Since:
        2
        See Also:
        Constant Field Values
      • TEXT_FIELD_TRAILING_COMPONENT

        static final java.lang.String TEXT_FIELD_TRAILING_COMPONENT
        Specifies a component that will be placed at the trailing edge of the text field.

        See TEXT_FIELD_LEADING_COMPONENT for details.

        Component JTextField (and subclasses)
        Value type JComponent

        Since:
        2
        See Also:
        Constant Field Values
      • TEXT_FIELD_SHOW_CLEAR_BUTTON

        static final java.lang.String TEXT_FIELD_SHOW_CLEAR_BUTTON
        Specifies whether a "clear" (or "cancel") button is shown on the trailing side if the text field is not empty, editable and enabled. Default is false.

        Component JTextField (and subclasses)
        Value type Boolean

        Since:
        2
        See Also:
        Constant Field Values
      • TEXT_FIELD_CLEAR_CALLBACK

        static final java.lang.String TEXT_FIELD_CLEAR_CALLBACK
        Specifies the callback that is invoked when a "clear" (or "cancel") button is clicked. If a callback is specified than it is responsible for clearing the text field. Without callback, the text field clears itself.

        Either use a Runnable:

        
         myTextField.putClientProperty( "JTextField.clearCallback",
             (Runnable) () -> {
                 // clear field here or cancel search
             } );
         
        Or use a Consumer<javax.swing.text.JTextComponent> that receives the text field as parameter:
        
         myTextField.putClientProperty( "JTextField.clearCallback",
             (Consumer<JTextComponent>) textField -> {
                 // clear field here or cancel search
             } );
         

        Component JTextField (and subclasses)
        Value type Runnable or Consumer<javax.swing.text.JTextComponent>

        Since:
        2
        See Also:
        TEXT_FIELD_SHOW_CLEAR_BUTTON, Constant Field Values
      • TAB_BUTTON_UNDERLINE_PLACEMENT

        static final java.lang.String TAB_BUTTON_UNDERLINE_PLACEMENT
        Placement of underline if toggle button type is BUTTON_TYPE_TAB

        Component JToggleButton
        Value type Integer
        Allowed Values SwingConstants.BOTTOM (default), SwingConstants.TOP, SwingConstants.LEFT or SwingConstants.RIGHT

        Since:
        2.3
        See Also:
        Constant Field Values
      • TAB_BUTTON_UNDERLINE_HEIGHT

        static final java.lang.String TAB_BUTTON_UNDERLINE_HEIGHT
        Thickness of underline if toggle button type is BUTTON_TYPE_TAB.

        Component JToggleButton
        Value type Integer

        See Also:
        Constant Field Values
      • TAB_BUTTON_UNDERLINE_COLOR

        static final java.lang.String TAB_BUTTON_UNDERLINE_COLOR
        Color of underline if toggle button type is BUTTON_TYPE_TAB.

        Component JToggleButton
        Value type Color

        See Also:
        Constant Field Values
      • TAB_BUTTON_SELECTED_BACKGROUND

        static final java.lang.String TAB_BUTTON_SELECTED_BACKGROUND
        Background color if selected and toggle button type is BUTTON_TYPE_TAB.

        Component JToggleButton
        Value type Color

        See Also:
        Constant Field Values
      • TREE_WIDE_SELECTION

        static final java.lang.String TREE_WIDE_SELECTION
        Override if a tree shows a wide selection. Default is true.

        Component JTree
        Value type Boolean

        See Also:
        Constant Field Values
      • TREE_PAINT_SELECTION

        static final java.lang.String TREE_PAINT_SELECTION
        Specifies whether tree item selection is painted. Default is true. If set to false, then the tree cell renderer is responsible for painting selection.

        Component JTree
        Value type Boolean

        See Also:
        Constant Field Values
      • MACOS_WINDOW_BUTTONS_SPACING_MEDIUM

        static final java.lang.String MACOS_WINDOW_BUTTONS_SPACING_MEDIUM
        Add medium spacing around the macOS window close/minimize/zoom buttons.
        Since:
        3.4
        See Also:
        MACOS_WINDOW_BUTTONS_SPACING, Constant Field Values
      • MACOS_WINDOW_BUTTONS_SPACING_LARGE

        static final java.lang.String MACOS_WINDOW_BUTTONS_SPACING_LARGE
        Add large spacing around the macOS window close/minimize/zoom buttons.

        (requires macOS 11+; "medium" is used on older systems)

        Since:
        3.4
        See Also:
        MACOS_WINDOW_BUTTONS_SPACING, Constant Field Values
    • Method Detail

      • clientPropertyEquals

        static boolean clientPropertyEquals​(javax.swing.JComponent c,
                                            java.lang.String key,
                                            java.lang.Object value)
        Checks whether a client property of a component has the given value.
      • clientPropertyBoolean

        static boolean clientPropertyBoolean​(javax.swing.JComponent c,
                                             java.lang.String key,
                                             boolean defaultValue)
        Checks whether a client property of a component is a boolean and returns its value. If the client property is not set, or not a boolean, defaultValue is returned.
      • clientPropertyBooleanStrict

        static java.lang.Boolean clientPropertyBooleanStrict​(javax.swing.JComponent c,
                                                             java.lang.String key,
                                                             java.lang.Boolean defaultValue)
        Checks whether a client property of a component is a Boolean and returns its value. If the client property is not set, or not a Boolean, defaultValue is returned.
      • clientPropertyInt

        static int clientPropertyInt​(javax.swing.JComponent c,
                                     java.lang.String key,
                                     int defaultValue)
        Checks whether a client property of a component is an integer and returns its value. If the client property is not set, or not an integer, defaultValue is returned.
      • clientPropertyColor

        static java.awt.Color clientPropertyColor​(javax.swing.JComponent c,
                                                  java.lang.String key,
                                                  java.awt.Color defaultValue)
        Checks whether a client property of a component is a color and returns its value. If the client property is not set, or not a color, defaultValue is returned.
      • clientProperty

        static <T> T clientProperty​(javax.swing.JComponent c,
                                    java.lang.String key,
                                    T defaultValue,
                                    java.lang.Class<T> type)
        Returns the value of the specified client property if it is an instance of the specified type. Otherwise, defaultValue is returned.
        Since:
        2