Releases: JFormDesigner/FlatLaf
1.6.1
1.6
This release brings some minor improvements and bug fixes.
Change log
New features and improvements
- InternalFrame: Double-click on icon in internal frame title bar now closes the
internal frame. (issue #374) - IntelliJ Themes: Removed deprecated
install()
methods.
Fixed bugs
- Menus: Fixed missing modifiers flags in
ActionEvent
(e.g.Ctrl
key
pressed) when running in Java 9+ on Linux, macOS. Occurs also on Windows in
large popup menus that do not fit into the window. (issue #371; regression since FlatLaf 1.3) - OptionPane: Fixed
OptionPane.sameSizeButtons
, which did not work as expected
when setting tofalse
. - OptionPane: Fixed rendering of longer HTML text if it is passed as
StringBuilder
,StringBuffer
, or any other object that returns HTML text in
methodtoString()
. (similar to issue #12) - ComboBox: Fixed popup border painting on HiDPI screens (e.g. at 150% scaling).
- ComboBox: Fixed popup location if shown above of combo box (Java 8 only).
- ComboBox (editable): Fixed wrong border of internal text field under special circumstances.
- Spinner: Fixed painting of border corners on left side. (issue #382; regression since FlatLaf 1.4)
- TableHeader: Do not show resize cursor for last column if resizing last column
is not possible because auto resize mode of table is not off. (issue #332) - TableHeader: Fixed missing trailing vertical separator line if used in upper
left corner of scroll pane. (issue #332) - TextField, FormattedTextField, PasswordField and ComboBox: Fixed alignment of
placeholder text in right-to-left component orientation. - Slider: Fixed calculation of baseline, which was wrong under some circumstances.
1.5
This release brings some minor improvements and bug fixes.
Users of the Windows 10 native window decorations are recommended
to update to this release because it fixes an occasional application crash.
Change log
New features and improvements
- SwingX: Added search and clear icons to
JXSearchField
. (issue #359)
Fixed bugs
- Button and TextComponent: Do not apply minimum width/height if margins are
set. (issue #364) - ComboBox and Spinner: Limit arrow button width if component has large
preferred height. (issue #361) - FileChooser: Fixed missing (localized) texts when FlatLaf is loaded in special
classloader (e.g. plugin system in Apache NetBeans). - InternalFrame: Limit internal frame bounds to parent bounds on resize. Also
honor maximum size of internal frame. (issue #362) - Popup: Fixed incorrectly placed drop shadow for medium-weight popups in
maximized windows. (issue #358) - Native window decorations (Windows 10 only):
- Fixed occasional application crash in
flatlaf-windows.dll
. (issue #357) - When window is initially shown, fill background with window background color
(instead of white), which avoids flickering in dark themes. (issue 339) - When resizing a window at the right/bottom edge, then first fill the new
space with the window background color (instead of black) before the layout
is updated. - When resizing a window at the left/top edge, then first fill the new space
with the window background color (instead of garbage) before the layout is
updated.
- Fixed occasional application crash in
1.4
Change log
New features and improvements
- TextField, FormattedTextField and PasswordField: Support adding extra padding.
(set client propertyJTextField.padding
toInsets
). - PasswordField: UI delegate
FlatPasswordFieldUI
now extendsFlatTextFieldUI
(instead ofBasicPasswordFieldUI
) to avoid duplicate code and for easier extensibility. - Table and PopupFactory: Use
StackWalker
in Java 9+ for better performance. (issue #334) - ToolBar: Paint focus indicator for focused button in toolbar. (issue #346)
- ToolBar: Support focusable buttons in toolbar (set UI values
ToolBar.focusableButtons
totrue
). (issue #346)
Fixed bugs
- ComboBox (editable) and Spinner: Increased size of internal text field to the
component border so that it behaves like plain text field (mouse click to left
of text now positions caret to first character instead of opening ComboBox
popup; mouse cursor is now of type "text" within the whole component, except
for arrow buttons). (issue #330) - ComboBox (not editable): Increased size of internal renderer pane to the
component border so that it can paint within the whole component. Also
increase combo box size if a custom renderer uses a border with insets that
are larger than the default combo box padding (2,6,2,6
). - Fixed component heights at
1.25x
,1.75x
and2.25x
scaling factors (Java
8 only) so that Button, ComboBox, Spinner and TextField components (including
subclasses) have same heights. This increases heights of Button and TextField
components by:2px
at1.75x
in Light and Dark themes2px
at1.25x
and2.25x
in IntelliJ and Darcula themes
- OptionPane: Do not make child components, which are derived from
JPanel
, non-opaque. (issue #349) - OptionPane: Align wrapped lines to the right if component orientation is right-to-left. (issue #350)
- PasswordField: Caps lock icon no longer painted over long text. (issue #172)
- PasswordField: Paint caps lock icon on left side in right-to-left component orientation.
- Window decorations: Window title bar width is no longer considered when
calculating preferred/minimum width of window. (issue #351)
1.3
Change log
New features and improvements
- TextComponents, ComboBox and Spinner: Support different background color when
component is focused (use UI valuesTextField.focusedBackground
,
PasswordField.focusedBackground
,FormattedTextField.focusedBackground
,
TextArea.focusedBackground
,TextPane.focusedBackground
,
EditorPane.focusedBackground
,ComboBox.focusedBackground
,
ComboBox.buttonFocusedBackground
,ComboBox.popupBackground
and
Spinner.focusedBackground
). (issue #335)
Fixed bugs
1.2
This release brings a lot of minor new features, improvements and bug fixes.
Users of version 1.1.x are recommended to update to 1.2 because this release
fixes some minor issues with native window decorations.
Change log
New features and improvements
- Renamed
Flat*Laf.install()
methods toFlat*Laf.setup()
to avoid confusion
withUIManager.installLookAndFeel(LookAndFeelInfo info)
. The old
Flat*Laf.install()
methods are still there, but marked as deprecated. They
will be removed in a future version. - Button and ToggleButton: Support borderless button style (set client property
JButton.buttonType
toborderless
). (PR #276) - ComboBox: Support using as cell renderer (e.g. in
JTable
). - DesktopPane: Improved layout of iconified internal frames in dock:
- Always placed at bottom-left in desktop pane.
- Newly iconified frames are added to the right side of the dock.
- If frame is deiconified, dock is compacted (icons move to the left).
- If dock is wider than desktop width, additional rows are used.
- If desktop pane is resized, layout of dock is updated.
- TableHeader: Moved table header column border painting from
FlatTableHeaderUI
to new borderFlatTableHeaderBorder
to improve
compatibility with custom table header implementations. (issue #228) - Linux: Enable text anti-aliasing if no Gnome or KDE Desktop properties are
available. (issue #218) - IntelliJ Themes: Added "Material Theme UI Lite / GitHub Dark" theme.
- JIDE Common Layer: Improved support for
JideTabbedPane
. (PR #306) - Extras:
FlatSVGIcon
improvements: - Extras: UI Inspector: Show class hierarchies when pressing Alt key
and prettified class names (dimmed package name). - Extras:
FlatSVGUtils.createWindowIconImages()
now returns a single
multi-resolution image that creates requested image sizes on demand from SVG
(only on Windows with Java 9+).
Fixed bugs
- CheckBox and RadioButton: Do not fill background if used as cell renderer,
except if cell is selected or has different background color. (issue #311) - DesktopPane:
- Fixed missing preview of iconified internal frames in dock when using a
custom desktop manager. (PR #294) - Fixed incomplete preview of iconified internal frames in dock when switching LaF.
- On HiDPI screens, use high-resolution images for preview of iconified
internal frames in dock.
- Fixed missing preview of iconified internal frames in dock when using a
- PopupFactory: Fixed occasional
NullPointerException
inFlatPopupFactory.fixToolTipLocation()
. (issue #305) - Tree: Fill cell background if
DefaultTreeCellRenderer.setBackgroundNonSelectionColor(Color)
was used. (issue #322) - IntelliJ Themes: Fixed background colors of DesktopPane and DesktopIcon in all themes.
- Native window decorations:
- Fixed slow application startup under particular conditions. (e.g. incomplete custom JRE) (issue #319)
- Fixed occasional double window title bar when creating many frames or dialogs. (issue #315)
- Fixed broken maximizing window (under special conditions) when restoring frame state at startup.
- Title icon: For multi-resolution images now use
getResolutionVariant(width, height)
(instead ofgetResolutionVariants()
) to allow creation of requested size on demand.
This also avoids creation of all resolution variants. - Double-click at upper-left corner of maximized frame did not close window. (issue #326)
- Linux: Fixed/improved detection of user font settings. (issue #309)
1.1.2
This is a bug fix release. Users of version 1.1
are recommended to update to 1.1.2
.
Change log
New features and improvements
- Native window decorations: Added API to check whether current platform
supports window decorations (FlatLaf.supportsNativeWindowDecorations()
) and
to toggle window decorations of all windows (FlatLaf.setUseNativeWindowDecorations(boolean)
). - Native window decorations: Support changing title bar background and
foreground colors per window. (set client properties
JRootPane.titleBarBackground
andJRootPane.titleBarForeground
on root pane
to ajava.awt.Color
).
Fixed bugs
- Native window decorations: Fixed loading of native library when using Java
Platform Module System (JPMS) for application. (issue #289) - Native window decorations: Removed superfluous pixel-line at top of screen
when window is maximized. (issue #296) - Window decorations: Fixed random window title bar background in cases were
background is not filled by custom window or root pane components and unified
background is enabled. - IntelliJ Themes: Fixed window title bar background if unified background is enabled.
- IntelliJ Themes: Fixed system colors.
- Button and ToggleButton: Do not paint background of disabled (and unselected)
toolBar buttons. (issue #292; regression since fixing #112) - ComboBox and Spinner: Fixed too wide arrow button if component is higher than
preferred. (issue #302) - SplitPane:
JSplitPane.setContinuousLayout(false)
did not work. (issue #301) - TabbedPane: Fixed NPE when creating/modifying in another thread. (issue #299)
- Fixed crash when running in Webswing. (issue #290)
1.1.1
This is a bug fix release. Users of version 1.1
are recommended to update to 1.1.1
.
Change log
New features and improvements
- Native window decorations: Support disabling native window decorations per
window. (set client propertyJRootPane.useWindowDecorations
tofalse
on root pane). - Support running on WinPE. (issue #279)
Fixed bugs
- Native window decorations: Fixed missing animations when minimizing,
maximizing or restoring a window using window title bar buttons. (issue #282) - Native window decorations: Fixed broken maximizing window when restoring frame
state at startup. (issue #283) - Native window decorations: Fixed double window title bar when first disposing
a window withframe.dispose()
and then showing it again withframe.setVisible(true)
. (issue #277) - Custom window decorations: Fixed NPE in
FlatTitlePane.findHorizontalGlue()
. (issue #275) - Custom window decorations: Fixed right aligned progress bar in embedded menu
bar was overlapping window title. (issue #272) - Fixed missing focus indicators in heavy-weight popups. (issue #273)
- InternalFrame: Fixed translucent internal frame menu bar background if
TitlePane.unifiedBackground
istrue
. (issue #274) - Extras: UI Inspector: Fixed
InaccessibleObjectException
when running in Java 16.
1.1
Highlights
This release comes with fantastic news for Windows 10 users/developers.
Native window decorations on Windows 10
This enables dark frame/dialog title bar and embedded menu bar with all JREs while still having:
- native Window 10 border drop shadows
- native Window 10 resize functionality
- Windows 10 snapping functionality
- native Windows 10 system window menu when right-clicking on title bar or left-clicking on application icon
This feature is enabled by default on Windows 10.
If you don't like/want it, you can disable it with:
UIManager.put( "TitlePane.useWindowDecorations", false );
It is also possible to disable only the embedded menu bar (and keep the dark title pane) with:
UIManager.put( "TitlePane.menuBarEmbedded", false );
It is also possible to disable this on command line with following VM options:
-Dflatlaf.useWindowDecorations=false
-Dflatlaf.menuBarEmbedded=false
If you have following code in your app, you can remove it (no longer necessary):
// enable window decorations
JFrame.setDefaultLookAndFeelDecorated( true );
JDialog.setDefaultLookAndFeelDecorated( true );
Right aligned components in title pane with embedded menu bar on Windows 10
A usual way to add a component to the right side of the menu bar is to first add a horizontal glue component (Box.createHorizontalGlue()
) and then the own component. In a non-embedded menu bar it looks like this:
This now also works for embedded menu bars:
Example for adding own component to right side of menu bar:
JButton myButton = new JButton();
myButton.setIcon( new FlatSVGIcon( "myicon.svg" ) );
myButton.putClientProperty( "JButton.buttonType", "toolBarButton" );
myButton.setFocusable( false );
myMenuBar.add( Box.createHorizontalGlue() );
myMenuBar.add( myButton );
Unified backgrounds on Windows 10
To give your app an even more modern look, you can now use unified backgrounds for window title bar, menu bar and main content. This is similar to what IntelliJ IDEA does.
Enable with:
UIManager.put( "TitlePane.unifiedBackground", true );
You can try this in the FlatLafDemo app with "Options > Unified Title Bar".
Change log
New features and improvements
- Windows 10 only:
- Native window decorations for Windows 10 enables dark frame/dialog title bar
and embedded menu bar with all JREs, while still having native Windows 10
border drop shadows, resize behavior, window snapping and system window menu. (PR #267) - Custom window decorations: Support right aligned components in
JFrame
title bar with embedded menu bar (usingBox.createHorizontalGlue()
). (PR #268) - Custom window decorations: Improved centering of window title with embedded menu bar. (PR #268; issue #252)
- Custom window decorations: Support unified backgrounds for window title bar,
menu bar and main content. If enabled withUIManager.put( "TitlePane.unifiedBackground", true );
then window title bar and menu bar use same background color as main content. (PR #268; issue #254)
- Native window decorations for Windows 10 enables dark frame/dialog title bar
- JIDE Common Layer: Support
JideButton
,JideLabel
,JideSplitButton
,JideToggleButton
andJideToggleSplitButton
. - JIDE Common Layer: The library on Maven Central no longer depends on
com.jidesoft:jide-oss:3.6.18
to avoid problems when another JIDE library
should be used. (issue #270) - SwingX: The library on Maven Central no longer depends on
org.swinglabs.swingx:swingx-all:1.6.5-1
to avoid problems when another
SwingX library should be used. - Support running in JetBrains Projector.
Fixed bugs
- IntelliJ Themes: Fixed text color of CheckBoxMenuItem and RadioButtonMenuItem
in all "Arc" themes. (issue #259)
1.0
FlatLaf 1.0 is here 🎉 😀
Finally, after one and a half years of development, forty 0.x releases,
32 merged PRs, 191 closed issues and hundreds cups of coffee. 😄
It took longer than expected.
Looking back at all the features already implemented, we could also name it 3.0. 😁
FlatLaf is already used in a lot of open-source and commercial applications.
To name only a few: Apache NetBeans, jclasslib, KeyStore Explorer, DbVisualizer, MagicPlot, OWASP ZAP.
Here is a longer list.
Many, many thanks to the community. 🏆 🥇 🚀
Without your feedback, support, feature requests, bug reports and pull requests,
FlatLaf would not be there where it is now.
What's next? The development continues! Stay tuned... 😉
If you like FlatLaf, please give it a star @ GitHub. Thanks!
Change log
New features and improvements
- Extras: UI Inspector: Tooltip is no longer limited to window bounds.
Fixed bugs
- TabbedPane: Custom
TabbedPane.selectedForeground
color did not work when
TabbedPane.foreground
has also custom color. (issue #257) - FileChooser: Fixed display of date in details view if current user is selected
in "Look in" combobox. (Windows 10 only; issue #249) - Table: Fixed wrong grid line thickness in dragged column on HiDPI screens on
Java 9+. (issue #236) - PopupFactory: Fixed
NullPointerException
whenPopupFactory.getPopup()
is
invoked with parameterowner
set tonull
.