Releases: JFormDesigner/FlatLaf
2.5
Change Log
New features and improvements
- Linux: Use X11 window manager events to move window and to show window menu
(right-click on window title bar), if custom window decorations are enabled.
This gives FlatLaf windows a more "native" feeling. (issue #482) - MenuBar: Support different menu selection style UI defaults for
MenuBar
andMenuItem
. (issue #587) - MenuBar: Top level menus now use
MenuBar.font
instead ofMenu.font
. (issue #589) - PasswordField: Reveal button is now hidden (and turned off) if password field
is disabled. (issue #501) - TabbedPane: New option to disable tab run rotation in wrap layout. Set UI
valueTabbedPane.rotateTabRuns
tofalse
. (issue #574) - Window decorations:
- Added client property to mark components in embedded menu bar as "caption"
(allow moving window). (issue #569) - Option to show window icon only in frames, but not in dialogs. Set UI value
TitlePane.showIconInDialogs
tofalse
. (issue #589) - Added UI value
TitlePane.font
to customize window title font. (issue #589)
- Added client property to mark components in embedded menu bar as "caption"
- Added system property
flatlaf.updateUIOnSystemFontChange
to allow disabling
automatic UI update when system font changes. (issue #580)
Fixed bugs
- Fixed missing UI value
MenuItem.acceleratorDelimiter
on macOS. (wasnull
,
is now an empty string) - Fixed possible exception in
FlatUIUtils.resetRenderingHints()
. (issue #575) - Fixed AWT components on macOS, which use Swing components internally. (issue #583)
- SwingX: Fixed missing highlighting of "today" in
JXMonthView
and
JXDatePicker
.
2.4
Highlights
This release brings some usability improvements to the window title bar used in FlatLaf window decorations.
This affects only Windows 10/11.
Window resizing
There are now additional areas at top of embedded menu bar to resize the window. This makes it easier to resize small frames with lot of menus.
Minimum window title width for moving window
The window title now has a minimum width, which avoids that it is completely hidden in small frames with menus. The window title is important because it is needed to move the window. Without any window title, you can move the window only via the small area around the window icon.
Buttons shrink if space is rare
The width of iconify/maximize/close buttons is reduced if space is rare, to give more space to embedded menu bar and title.
Show app icon beside title
There is a new option to show window icon beside window title, if menu bar is embedded or title is centered.
Change Log
New features and improvements
- Native window decorations (Windows 10/11 only): (PR #565)
- There is now a small area at top of the embedded menu bar to resize the window.
- Improved window title bar layout for small window widths:
- Width of iconify/maximize/close buttons is reduced (if necessary) to give
more space to embedded menu bar and title. - Window title now has a minimum width to always allow moving window
(click-and-drag on window title). Instead, embedded menu bar is made smaller. - Option to show window icon beside window title, if menu bar is embedded or
title is centered. Set UI valueTitlePane.showIconBesideTitle
totrue
.
- Width of iconify/maximize/close buttons is reduced (if necessary) to give
- No longer reduce height of window title bar if it has an embedded menu bar
and is maximized.
Fixed bugs
- ComboBox: Fixed vertical alignment of text in popup list with text in combo
box in IntelliJ/Darcula themes. - Menus: Fixed application freeze under very special conditions (invoking
FlatLaf.initialize()
twice in NetBeans GUI builder) and using menu that has
submenus. See NetBeans issue #4231 for details. - MenuItem: Fixed sometimes wrapped HTML text on HiDPI screens on Windows.
- TableHeader: Fixed exception when changing table structure (e.g. removing
column) from a table header popup menu action. (issue #532) HiDPIUtils.paintAtScale1x()
now supports rotated graphics. (issue #557)- Typography: No longer use
Consolas
orCourier New
as monospaced font on
Windows because they have bad vertically placement. - Native window decorations (Windows 10/11 only):
- Do not center window title if embedded menu bar is empty or has no menus at
left side, but some components at right side. (issue #558) - Do not use window decorations if system property
sun.java2d.opengl
is
true
on Windows 10. (issue #540) - Fixed missing top window border in dark themes if window drop shadows are
disabled in system settings. (issue #554; Windows 10 only) - Right-to-left component orientation of title bar was lost when switching theme.
- Do not center window title if embedded menu bar is empty or has no menus at
2.3
Highlights
macOS improvements in FlatLaf Demo
The FlatLaf Demo now demonstrates how to use the "full window content" feature on macOS to extend the content into the window title bar:
This is the old FlatLaf Demo without "full window content":
And here is a guide to use this in own applications: https://www.formdev.com/flatlaf/macos/
File chooser shortcuts panel
This release adds a shortcuts panel to the left side of all file choosers (class JFileChooser
):
On Windows, the content of the shortcuts panel is the same as in the Java Windows L&F.
On macOS and Linux the shortcuts panel is empty and hidden.
However you can customize the content. See PR #522
Change Log
New features and improvements
- FileChooser: Added (optional) shortcuts panel. On Windows it contains "Recent
Items", "Desktop", "Documents", "This PC" and "Network". On macOS and Linux it
is empty/hidden. (PR #522, issue #100) - Button and ToggleButton: Added missing foreground colors for hover, pressed,
focused and selected states. (issue #535) - Table: Optionally paint alternating rows below table if table is smaller than
scroll pane. Set UI valueTable.paintOutsideAlternateRows
totrue
.
Requires thatTable.alternateRowColor
is set to a color. (issue #504) - ToggleButton: Made the underline placement of tab-style toggle buttons
configurable. (PR #530; issue #529) - Added spanish translation. (PR #525)
Fixed bugs
- IntelliJ Themes: Fixed
TitledBorder
text color in "Monokai Pro" theme.
(issue #524)
2.2
Change Log
New features and improvements
- SplitPane: Allow limiting one-touch expanding to a single side (set client
propertyJSplitPane.expandableSide
to"left"
or"right"
). (issue #355) - TabbedPane: Selected tab underline color now changes depending on whether the
focus is within the tab content. (issue #398) - IntelliJ Themes:
- Added "Monokai Pro" and "Xcode-Dark" themes.
- TabbedPane now use different background color for selected tabs in all "Arc"
themes, in "Hiberbee Dark" and in all "Material UI Lite" themes.
Fixed bugs
- Native window decorations (Windows 10/11 only): Fixed wrong window title
character encoding used in Windows taskbar. (issue #502) - Button: Fixed icon layout and preferred width of default buttons that use bold
font. (issue #506) - FileChooser: Enabled full row selection for details view to fix alternate row
coloring. (issue #512) - SplitPane: Fixed
StackOverflowError
caused by layout loop that may occur
under special circumstances. (issue #513) - Table: Slightly changed grid colors to make grid better recognizable. (issue
#514) - ToolBar: Fixed endless loop in focus navigation that may occur under special
circumstances. (issue #505) - IntelliJ Themes:
Component.accentColor
UI property now has useful theme
specific values. (issue #507)
2.1
Highlights
Submenu usability
This release significantly improves the usability of submenus. It makes it much easier to move the mouse into a submenu without the risk that the submenu is hidden.
Previously, you have to move the mouse on the red path, otherwise the submenu will be hidden.
Now, you can move the mouse on the green path, over other menu items.
Menu Scrolling
Large menus are now scrollable using mouse wheel or scroll arrows:
Change Log
New features and improvements
- Menus: Improved usability of submenus. (PR #490; issue #247)
- Menus: Scroll large menus using mouse wheel or up/down arrows. (issue #225)
- Linux: Support using custom window decorations. Enable with
JFrame.setDefaultLookAndFeelDecorated(true)
and
JDialog.setDefaultLookAndFeelDecorated(true)
before creating a window. (issue #482) - ScrollBar: Added UI value
ScrollBar.minimumButtonSize
to specify minimum
scroll arrow button size (if shown). (issue #493)
Fixed bugs
- PasswordField: Fixed reveal button appearance in IntelliJ themes. (issue #494)
- ScrollBar: Center and scale arrows in scroll up/down buttons (if shown). (issue #493)
- TextArea, TextPane and EditorPane: No longer select all text when component is
focused for the first time. (issue #498; regression in FlatLaf 2.0) - TabbedPane: Disable all items in "Show Hidden Tabs" popup menu if tabbed pane is disabled.
Incompatibilities
- Method
FlatUIUtils.paintArrow()
(and classFlatArrowButton
) now paints
arrows one pixel smaller than before. To fix this, increase parameterarrowSize
by one.
2.0.2
This is a bug fix release. Users of FlatLaf native window decorations are recommended to update to this release because it fixes rendering artifacts on HiDPI screens.
Change Log
- Native window decorations (Windows 10/11 only): Fixed rendering artifacts on
HiDPI screens when dragging window partly offscreen and back into screen
bounds. (issue #477) - Repaint component when setting client property
JComponent.outline
(issue #480). - macOS: Fixed NPE when using some icons in main menu items. (issue #483)
2.0.1
This is a bug fix release. Users of FlatLaf 2.0 are recommended to update to this release because it fixes a memory leak.
Change Log
- Fixed memory leak in Panel, Separator and ToolBarSeparator. (issue #471; regression in FlatLaf 2.0)
- ToolTip: Fixed wrong tooltip location if component overrides
JComponent.getToolTipLocation()
and wants place tooltip under mouse location. (issue #468) - Extras: Added copy constructor to
FlatSVGIcon
. (issue #465) - Moved
module-info.class
fromMETA-INF/versions/9/
to root folder of JARs. (issue #466)
2.0
Highlights
- Styling individual components using string in CSS syntax (see PR #341 and #388)
- Typography (see PR #396)
- Unified backgrounds for window title bar is now enabled by default (Windows 10/11 only)
- Support Windows 11 snap layouts menu (see #397)
- TextField: support leading and trailing components and icons (see PR #386 and #378)
- Reworked core themes to make it easier to create new themes (see PR #390)
- Easier changing accent color (see PR #375)
- CheckBox and RadioButton improvements (see PR #414)
Incompatibilities
If you're using own FlatLaf properties files, then you may be affected by some incompatible changes.
See PR #390 and #414.
Change Log
New features and improvements
- Styling:
- Styling individual components using string in CSS syntax or
java.util.Map
. (PR #341)
E.g.:mySlider.putClientProperty( "FlatLaf.style", "trackWidth: 2" );
- Style classes allow defining style rules at a single place (in UI defaults)
and use them in any component. (PR #388)
E.g.:mySlider.putClientProperty( "FlatLaf.styleClass", "myclass" );
- Styling individual components using string in CSS syntax or
- Typography defines several font styles for headers and various text sizes,
which makes it easy to use consistent font styles across the application. (PR #396) - Native window decorations (Windows 10/11 only):
- Unified backgrounds for window title bar is now enabled by default (window
title bar has now same background color as window content). Bottom separator
for menu bars is no longer painted (if unified background is enabled). - Show Windows 11 snap layouts menu when hovering the mouse over the maximize
button. (issues #397 and #407) - Possibility to hide window title bar icon (for single window set client
propertyJRootPane.titleBarShowIcon
tofalse
; for all windows set UI
valueTitlePane.showIcon
tofalse
). - OptionPane: Hide window title bar icon by default. Can be be made visibly by
setting UI defaultOptionPane.showIcon
totrue
. (issue #416) - No longer show the Java "duke/cup" icon if no window icon image is set. (issue #416)
- Unified backgrounds for window title bar is now enabled by default (window
- TextField, FormattedTextField and PasswordField:
- Support leading and trailing icons (set client property
JTextField.leadingIcon
orJTextField.trailingIcon
to a
javax.swing.Icon
). (PR #378; issue #368) - Support leading and trailing components (set client property
JTextField.leadingComponent
orJTextField.trailingComponent
to a
java.awt.Component
). (PR #386) - Support "clear" (or "cancel") button to empty text field. Only shown if text
field is not empty, editable and enabled. (set client property
JTextField.showClearButton
totrue
). (PR #442)
- Support leading and trailing icons (set client property
- PasswordField: Support reveal (or "eye") button to show password. (see UI
valuePasswordField.showRevealButton
) (PR #442; issue #173) - TextComponents: Double/triple-click-and-drag now extends selection by whole words/lines.
- Theming improvements: Reworks core themes to make it easier to create new
themes (e.g. reduced explicit colors by using color functions). Note:
There are minor incompatible changes in FlatLaf properties files. (PR #390) - ToolBar:
- Toolbars are no longer floatable by default (dots on left side of toolbar
that allows dragging toolbar). UseUIManager.put( "ToolBar.floatable", true )
if you want the old behavior. - Skip components with empty input map (e.g.
JLabel
) when using arrow keys
to navigate in focusable buttons (if UI valueToolBar.focusableButtons
istrue
). - Support arrow-keys-only navigation within focusable buttons of toolbar (if
UI valueToolBar.focusableButtons
istrue
):- arrow keys move focus within toolbar
- tab-key moves focus out of toolbar
- if moving focus into the toolbar, focus recently focused toolbar button
- Toolbars are no longer floatable by default (dots on left side of toolbar
- ComboBox, Spinner, TextField and subclasses: Support specifying width of
border (see UI valueComponent.borderWidth
). - CheckBox and RadioButton:
- Made selected icon better recognizable in FlatLaf Light (use blue
border), Dark and Darcula (use lighter border) themes. IntelliJ
theme is not changed. - Support specifying width of icon border (see UI value
CheckBox.icon.borderWidth
). - Reworked icon UI defaults and added missing ones. Note: There are minor
incompatible changes in FlatLaf properties files.
- Made selected icon better recognizable in FlatLaf Light (use blue
- Slider: Support specifying width of thumb border (see UI value
Slider.thumbBorderWidth
). - TabbedPane: Optionally paint selected tab as card. (PR #343)
- MenuItem:
- Panel: Support painting background with rounded corners. (issue #367)
- Added more color functions to class
ColorFunctions
for easy use in
applications:lighten()
,darken()
,saturate()
,desaturate()
,spin()
,
tint()
,shade()
andluma()
. - Support defining fonts in FlatLaf properties files. (issue #384)
- Added method
FlatLaf.registerCustomDefaultsSource(URL packageUrl)
for JPMS. (issue #325) - Extras:
- SwingX:
- New "column control" icon for
JXTable
that scales and uses antialiasing. (issue #434)
- New "column control" icon for
Fixed bugs
- Native window decorations: Fixed
UnsatisfiedLinkError
on Windows 11 for ARM
processors. (issue #443) - MenuBar: Do not fill background if non-opaque and having custom background
color. (issue #409) - InternalFrame: Fill background to avoid that parent may shine through internal
frame if it contains non-opaque components. (better fix for issue #274) - SwingX: Fixed
NullPointerException
inFlatCaret
when using
org.jdesktop.swingx.prompt.PromptSupport.setPrompt()
on a text field and
then switching theme.
Changes since 2.0-rc1
- Added system property
flatlaf.nativeLibraryPath
to load native libraries
from a directory. (PR #453) - Fixed "endless recursion in font" exception in
FlatLaf$ActiveFont.createValue()
ifUIManager.getFont()
is invoked from
multiple threads. (issue #456) - PasswordField: Preserve reveal button state when switching theme. (PR #442; issue #173)
- PasswordField: Reveal button did not show password if
JPasswordField.setEchoChar()
was invoked from application. (PR #442; issue #173) - Slider: Fixed/improved focused indicator color when changing accent color. (PR #375)
- TextField:
- Extras: Fixed concurrent loading of SVG icons on multiple threads. (issue #459)
- Use FlatLaf native window decorations by default when running in JetBrains Runtime
(instead of using JetBrains custom decorations). System variable
flatlaf.useJetBrainsCustomDecorations
is nowfalse
by default (wastrue
in FlatLaf 1.x). (issue #454) - Native window decorations:
- Fixed blurry iconify/maximize/close button hover rectangles at 125%, 150% or 175% scaling. (issue #431)
- Updated maximize and restore icons for Windows 11 style. (requires Java 8u321, 11.0.14, 17.0.2 or 18+)
- Updated hover and pressed colors of iconify/maximize/close buttons for Windows 11 style.
2.0-rc1
Highlights
- Styling individual components using string in CSS syntax (see PR #341 and #388)
- Typography (see PR #396)
- Unified backgrounds for window title bar is now enabled by default (Windows 10/11 only)
- Support Windows 11 snap layouts menu (see #397)
- TextField: support leading and trailing components and icons (see PR #386 and #378)
- Reworked core themes to make it easier to create new themes (see PR #390)
- Easier changing accent color (see PR #375)
- CheckBox and RadioButton improvements (see PR #414)
Incompatibilities
If you're using own FlatLaf properties files, then you may be affected by some incompatible changes.
See PR #390 and #414.
Change Log
New features and improvements
- Styling:
- Styling individual components using string in CSS syntax or
java.util.Map
. (PR #341)
E.g.:mySlider.putClientProperty( "FlatLaf.style", "trackWidth: 2" );
- Style classes allow defining style rules at a single place (in UI defaults)
and use them in any component. (PR #388)
E.g.:mySlider.putClientProperty( "FlatLaf.styleClass", "myclass" );
- Styling individual components using string in CSS syntax or
- Typography defines several font styles for headers and various text sizes,
which makes it easy to use consistent font styles across the application. (PR #396) - Native window decorations (Windows 10/11 only):
- Unified backgrounds for window title bar is now enabled by default (window
title bar has now same background color as window content). Bottom separator
for menu bars is no longer painted (if unified background is enabled). - Show Windows 11 snap layouts menu when hovering the mouse over the maximize
button. (issues #397 and #407) - Possibility to hide window title bar icon (for single window set client
propertyJRootPane.titleBarShowIcon
tofalse
; for all windows set UI
valueTitlePane.showIcon
tofalse
). - OptionPane: Hide window title bar icon by default. Can be be made visibly by
setting UI defaultOptionPane.showIcon
totrue
. (issue #416) - No longer show the Java "duke/cup" icon if no window icon image is set. (issue #416)
- Unified backgrounds for window title bar is now enabled by default (window
- TextField, FormattedTextField and PasswordField:
- Support leading and trailing icons (set client property
JTextField.leadingIcon
orJTextField.trailingIcon
to a
javax.swing.Icon
). (PR #378; issue #368) - Support leading and trailing components (set client property
JTextField.leadingComponent
orJTextField.trailingComponent
to a
java.awt.Component
). (PR #386) - Support "clear" (or "cancel") button to empty text field. Only shown if text
field is not empty, editable and enabled. (set client property
JTextField.showClearButton
totrue
). (PR #442)
- Support leading and trailing icons (set client property
- PasswordField: Support reveal (or "eye") button to show password. (see UI
valuePasswordField.showRevealButton
) (PR #442; issue #173) - TextComponents: Double/triple-click-and-drag now extends selection by whole words/lines.
- Theming improvements: Reworks core themes to make it easier to create new
themes (e.g. reduced explicit colors by using color functions). Note:
There are minor incompatible changes in FlatLaf properties files. (PR #390) - ToolBar:
- Toolbars are no longer floatable by default (dots on left side of toolbar
that allows dragging toolbar). UseUIManager.put( "ToolBar.floatable", true )
if you want the old behavior. - Skip components with empty input map (e.g.
JLabel
) when using arrow keys
to navigate in focusable buttons (if UI valueToolBar.focusableButtons
istrue
). - Support arrow-keys-only navigation within focusable buttons of toolbar (if
UI valueToolBar.focusableButtons
istrue
):- arrow keys move focus within toolbar
- tab-key moves focus out of toolbar
- if moving focus into the toolbar, focus recently focused toolbar button
- Toolbars are no longer floatable by default (dots on left side of toolbar
- ComboBox, Spinner, TextField and subclasses: Support specifying width of
border (see UI valueComponent.borderWidth
). - CheckBox and RadioButton:
- Made selected icon better recognizable in FlatLaf Light (use blue
border), Dark and Darcula (use lighter border) themes. IntelliJ
theme is not changed. - Support specifying width of icon border (see UI value
CheckBox.icon.borderWidth
). - Reworked icon UI defaults and added missing ones. Note: There are minor
incompatible changes in FlatLaf properties files.
- Made selected icon better recognizable in FlatLaf Light (use blue
- Slider: Support specifying width of thumb border (see UI value
Slider.thumbBorderWidth
). - TabbedPane: Optionally paint selected tab as card. (PR #343)
- MenuItem:
- Panel: Support painting background with rounded corners. (issue #367)
- Added more color functions to class
ColorFunctions
for easy use in
applications:lighten()
,darken()
,saturate()
,desaturate()
,spin()
,
tint()
,shade()
andluma()
. - Support defining fonts in FlatLaf properties files. (issue #384)
- Added method
FlatLaf.registerCustomDefaultsSource(URL packageUrl)
for JPMS. (issue #325) - Extras:
- SwingX:
- New "column control" icon for
JXTable
that scales and uses antialiasing. (issue #434)
- New "column control" icon for
Fixed bugs
- Native window decorations: Fixed
UnsatisfiedLinkError
on Windows 11 for ARM
processors. (issue #443) - MenuBar: Do not fill background if non-opaque and having custom background
color. (issue #409) - InternalFrame: Fill background to avoid that parent may shine through internal
frame if it contains non-opaque components. (better fix for issue #274) - SwingX: Fixed
NullPointerException
inFlatCaret
when using
org.jdesktop.swingx.prompt.PromptSupport.setPrompt()
on a text field and
then switching theme.
1.6.5
Change log
Fixed bugs
- Linux: Fixed font problems when running on Oracle Java (OpenJDK is not
affected):- oversized text if system font is "Inter" (issue #427)
- missing text if system font is "Cantarell" (on Fedora)
- MenuItem: Changed accelerator delimiter from
-
to+
. (Windows and Linux). - ComboBox: Fixed occasional
StackOverflowError
when modifying combo box not
on AWT thread. (issue #432) - macOS: Fixed
NullPointerException
when using AWT component
java.awt.Choice
. (issue #439) - Native window decorations: Do not exit application with
UnsatisfiedLinkError
in case that FlatLaf DLL cannot be executed because of restrictions on
temporary directory. Instead, continue with default window decorations. (issue #436)