Releases: JFormDesigner/FlatLaf
3.2.4
3.2.3
Update: Do not use this release because it throws a NPE in (unusual) case that the popup invoker is null.
Another bug fix release that fixes a JDK 21+ bug on Linux with Wayland regarding popups that request focus.
If you use complex popups (e.g. with text fields or other components that request focus)
and your application runs on Linux in Java 21 or later, then it is recommended to upgrade to this version.
Change Log
Fixed bugs
- PopupMenu: Popups that request focus were not shown on Linux with Wayland and Java 21. (issue #752)
3.2.2
This is a bug fix release that fixes a JDK 19+ bug regarding HTML text in buttons.
If you use HTML text in buttons and your application runs in Java 19 or later,
then it is recommended to upgrade to this version.
Change Log
Fixed bugs
- Button: Fixed painting icon and text at wrong location when using HTML text,
left/right vertical alignment and running in Java 19+. (issue #746) - CheckBox and RadioButton: Fixed cut off right side when border is removed and
horizontal alignment is set toright
. (issue #734) - TabbedPane: Fixed NPE when using focusable component as tab component and
switching theme. (issue #745)
3.2.1
This is a bug fix release that fixes a memory leak in class MultiResolutionImageSupport
,
which may, in worst case, result in an out-of-memory situation. See change log below for details.
Change Log
Fixed bugs
- Fixed memory leak in
MultiResolutionImageSupport.create(int,Dimension[],Function<Dimension,Image>)
,
which caches images created by the producer function. Used byFlatSVGIcon.getImage()
and
FlatSVGUtils.createWindowIconImages()
.
If you use one of these methods, it is strongly recommended to upgrade to this
version, because if the returned image is larger and painted very often it may
result in an out-of-memory situation. (issue #726) - FileChooser: Fixed occasional NPE in
FlatShortcutsPanel
on Windows. (issue #718) - TextField: Fixed placeholder text painting, which did not respect horizontal
alignment property ofJTextField
. (issue #721) - Popop: Fixed drop shadow if popup overlaps a heavyweight component. (Windows 10 only; issue #626)
3.2
Highlights
New SVG renderer
The FlatLaf Extras library now used JSVG library (instead of svgSalamander) for SVG rendering.
JSVG provides improved SVG rendering and uses less memory compared to svgSalamander.
IntelliJ Themes improved
Many improvements and fixed were made to the FlatLaf IntelliJ Themes Pack.
If you use those themes it is highly recommended to upgrade to this release.
TabbedPane: rounded selection
TabbedPane now support rounded underline selection and rounded card tabs.
Card tabs now have rounded corners by default.
FileChooser: more localized texts
FileChooser now show localized text for all locales supported by Java's Metal look and feel.
Toolbox-style "small" window title bar
FlatLaf Window Decorations now supports toolbox-style "small" window title bar.
Windows on ARM
The FlatLaf native library is now also available for ARM 64-bit architecture on Windows.
Change Log
New features and improvements
- TabbedPane: Support rounded underline selection and rounded card tabs. (PR #703)
- FlatLaf window decorations:
- Extras: Class
FlatSVGIcon
now uses JSVG
library (instead of svgSalamander) for rendering. JSVG provides improved SVG
rendering and uses less memory compared to svgSalamander. (PR #684) - ComboBox: Improved location of selected item in popup if list is large and scrollable.
- FileChooser: Show localized text for all locales supported by Java's Metal
look and feel. (issue #680) - Added system property
flatlaf.useNativeLibrary
to allow disabling loading of
FlatLaf native library. (issue #674) - IntelliJ Themes:
- Reduced memory footprint by releasing Json data and ignoring IntelliJ UI
properties that are not used in FlatLaf. - Updated "Hiberbee Dark" and "Gradianto" themes.
- Reduced memory footprint by releasing Json data and ignoring IntelliJ UI
Fixed bugs
- Styling: Fixed scaling of some styling properties (
rowHeight
for Table and
Tree;iconTextGap
for Button, CheckBox and RadioButton). (issue #682) - Fixed
IllegalComponentStateException
when invoker is not showing in
SubMenuUsabilityHelper
. (issue #692) - macOS themes: Changing
@accentColor
variable in FlatLaf properties files did
not change all accent related colors for all components. - IntelliJ Themes:
- "Light Owl" theme: Fixed wrong (unreadable) text color in selected menu
items, selected text in text components, and selection in ComboBox popup
list. (issue #687) - "Gradianto Midnight Blue" theme: Fixed color of ScrollBar track, which was
not visible. (issue #686) - "Monocai" theme: Fixed unreadable text color of default buttons. (issue #693)
- "Vuesion" theme: Fixed foreground colors of disabled text.
- "Material UI Lite" themes: Fixed non-editable ComboBox button background.
- CheckBox and RadioButton: Fixed unselected icon colors for themes "Atom One
Light", "Cyan Light", "GitHub", "Light Owl", "Material Lighter" and "Solarized Light". - TabbedPane: Fixed focused tab background color for themes "Arc *", "Material
Design Dark", "Monocai", "One Dark", "Spacegray" and "Xcode-Dark". (issue #697) - TextComponents, ComboBox and Spinner: Fixed background colors of enabled
text components, to distinguish from disabled, for themes "Carbon", "Cobalt 2",
"Gradianto *", "Gruvbox *", "Monocai", "Spacegray", "Vuesion",
"Xcode-Dark", "GitHub", and "Light Owl". (issue #528) - Fixed wrong disabled text colors in "Dark Flat", "Hiberbee Dark", "Light
Flat", "Nord", "Solarized Dark" and "Solarized Light" themes. - Fixed colors for selection background/foreground, Separator, Slider track
and ProgressBar background in various themes.
- "Light Owl" theme: Fixed wrong (unreadable) text color in selected menu
- Native Windows libraries: Fixed crash when running in Java 8 and newer Java
version is installed inPATH
environment variable and using class
SystemInfo
before AWT initialization. (issue #673) - ComboBox: Fixed search in item list for text with spaces. (issue #691)
- FormattedTextField: On Linux, fixed
IllegalArgumentException: Invalid location
ifJFormattedTextField.setDocument()
is invoked in a focus gained
listener on that formatted text field. (issue #698) - PopupMenu: Make sure that popup menu does not overlap any operating system
task bar. (issue #701) - FileChooser: Use system icons on Windows with Java 17.0.3 (and later) 32-bit.
Only Java 17 - 17.0.2 32-bit do not use system icons because of a bug in Java
32-bit that crashes the application. (PR #709) - FileChooser: Fixed crash on Windows with Java 17 to 17.0.2 32-bit. Java 17
64-bit is not affected. (regression since FlatLaf 2.3; PR #522, see also issue #403)
Incompatibilities
- Extras: Class
FlatSVGIcon
now uses JSVG
library for SVG rendering. You need to replace svgSalamander with JSVG in your
build scripts and distributejsvg.jar
with your application. Also replace
com.kitfox.svg
withcom.github.weisj.jsvg
inmodule-info.java
files. - IntelliJ Themes: Removed all "Contrast" themes from "Material UI Lite".
3.1.1
This is a bug fix release that fixes two regressions in FlatLaf 3.1.
Users of FlatLaf 3.1 that use IntelliJ themes or use WebStart, are recommended to update to this release.
Change Log
Fixed bugs
- IntelliJ Themes:
- Fixed too large menu item paddings and too large table/tree row heights (all
"Material Theme UI Lite" themes; issue #667; regression in FlatLaf 3.1). - Fixed too large tree row height in "Carbon", "Dark Purple", "Gray",
"Material Design Dark", "Monokai Pro", "One Dark" and "Spacegray" themes.
- Fixed too large menu item paddings and too large table/tree row heights (all
- Native libraries: Fixed
IllegalArgumentException: URI scheme is not "file"
when using FlatLaf in WebStart. (issue #668; regression in FlatLaf 3.1)
3.1
Highlights
Windows 11: rounded popup borders
On Windows 11, popups now use native Windows 11 rounded borders and drop shadows, which gives them a beautiful look:
Table: header hover and pressed feedback
Columns in table header now show hover and pressed feedback:
Change Log
New features and improvements
- Windows 11: Popups (
JPopupMenu
,JComboBox
,JToolTip
, etc.) now use
native Windows 11 rounded borders and drop shadows. (PR #643) - Fonts:
- Added Roboto Mono (https://fonts.google.com/specimen/Roboto+Mono). (PR #639, issue #638)
- Updated JetBrains Mono to v2.304.
- Theme Editor: Support macOS light and dark themes.
- TabbedPane: Support hover and focused tab foreground colors. (issue #627)
- TabbedPane:
tabbedPane.getBackgroundAt(tabIndex)
now has higher priority
thanTabbedPane.focusColor
andTabbedPane.selectedBackground
. If
tabbedPane.setBackgroundAt(tabIndex)
is used to set a color for a single
tab, then this color is now used even if the tab is focused or selected. - TableHeader: Support column hover and pressed background and foreground
colors. (issue #636) - Native libraries: Made it easier to distribute FlatLaf native libraries
(Windows.dll
and Linux.so
) to avoid problems on operating systems with
enabled execution restrictions.
See https://www.formdev.com/flatlaf/native-libraries/ for more details. (issue #624)- Published native libraries to Maven Central for easy using them as
dependencies in Gradle and Maven. - If available, native libraries are now loaded from same location as
flatlaf.jar
, otherwise they are extract fromflatlaf.jar
to temporary
folder and loaded from there. - Windows DLLs are now digitally signed with FormDev Software GmbH certificate.
- Published native libraries to Maven Central for easy using them as
Fixed bugs
- FlatLaf window decorations:
- Fixed inconsistent size of glass pane depending on whether FlatLaf window
decorations are used (e.g. Windows 10/11) or not (e.g. macOS). Now the glass
pane no longer overlaps the FlatLaf window title bar. (issue #630) - Linux: Fixed broken window resizing on multi-screen setups. (issue #632)
- Linux: Fixed behavior of maximize/restore button when tiling window to left
or right half of screen. (issue #647)
- Fixed inconsistent size of glass pane depending on whether FlatLaf window
- IntelliJ Themes:
- Styling: Fixed resolving of UI variables in styles that use other variables.
- MenuItem: Fixed horizontal alignment of icons. (issue #631)
- Table: Fixed potential performance issue with paint cell focus indicator
border. (issue #654) - Tree: Fixed missing custom closed/opened/leaf icons of a custom
DefaultTreeCellRenderer
. (issue #653; regression since implementing PR #609
in FlatLaf 3.0) - Tree: Fixed truncated node text and too small painted non-wide node background
if custom cell renderer sets icon, but not disabled icon, and tree is
disabled. (issue #640) - Fixed
HiDPIUtils.paintAtScale1x()
, which painted at wrong location if
graphics is rotated, is scaled andx
ory
parameters are not zero. (issue #646)
Fonts: JetBrains Mono 2.304
Updated JetBrains Mono font to v2.304.
https://github.com/JetBrains/JetBrainsMono/releases/tag/v2.304
3.0
Hooray, hooray, it's done. FlatLaf 3.0 is here 🎁 🎉 🎅 🤶 🧑🎄
BTW if you'd like to support the FlatLaf open-source project, please consider sponsoring it. Thank you very much for doing so.
Highlights
macOS themes
New light and dark themes that use macOS colors and look similar to native macOS controls:
Fonts
Packaged fonts Inter, Roboto and JetBrains Mono into JARs (available on Maven Central) and provide an easy way to use them with FlatLaf.
Rounded selection
JMenuItem
, JComboBox
, JList
and JTree
components now support rounded selection.
This is currently used only in macOS themes for menus and combo boxes, but may be used in standard themes as well in the future.
Feel free to use it in own themes to give your application a special look. See PRs for instructions.
Rounded outlined icons
JFileChooser
, JOptionPane
, JPasswordField
and JTree
got new modern rounded outlined icons:
Change Log
New features and improvements
- macOS light and dark themes: The two new themes
FlatMacLightLaf
and
FlatMacDarkLaf
use macOS colors and look similar to native macOS controls.
(PRs #533, #612 and #607) - Fonts: Packaged some fonts into JARs and provide an easy way to use them
with FlatLaf. (PRs #545, #614 and #615) At the moment there are three fonts:- Inter (https://rsms.me/inter/) - a typeface carefully crafted & designed
for computer screens - Roboto (https://fonts.google.com/specimen/Roboto) - default font on
Android and recommended for Material Design - JetBrains Mono (https://www.jetbrains.com/mono) - a monospaced typeface
- Inter (https://rsms.me/inter/) - a typeface carefully crafted & designed
- Rounded selection: Optionally use rounded selection in:
- Tree: Hide default closed/opened/leaf icons by default. Set UI value
Tree.showDefaultIcons
totrue
to show them. - ToolBar: Hover effect for button groups. (PR #534)
- Icons: New modern rounded outlined icons for
JFileChooser
,
JOptionPane
,JPasswordField
andJTree
. (PR #577)
Fixed bugs
- FileChooser: Fixed layout of (optional) accessory component and fixed too
large right margin. (issue #604; regression since implementing PR #522 in FlatLaf 2.3) - Tree:
- Fixed missing tree lines (if enabled) for wide-selected rows. (issue #598)
- Fixed scaling of tree lines and fixed alignment to expand/collapse arrows.
- Removed support for dashed tree lines.
Tree.lineTypeDashed
is now ignored.
- SwingX: Fonts in
JXHeader
,JXMonthView
,JXTaskPane
andJXTitledPanel
were not updated when changing default font.
2.6
Change Log
New features and improvements
- If value of system property
flatlaf.nativeLibraryPath
issystem
, then
System.loadLibrary(String)
is used to load the native library. - TabbedPane: Switch and close tabs on left mouse click only. (PR #595)
Fixed bugs
- ComboBox and Spinner: Fixed missing arrow buttons if preferred height is zero.
Minimum width of arrow buttons is 3/4 of default width. - MenuBar: Fixed NPE in
FlatMenuItemRenderer.getTopLevelFont()
if menu item
does not have a parent. (issue #600; regression since implementing #589 in
FlatLaf 2.5) - ScrollBar: Show "pressed" feedback on track/thumb only for left mouse button.
If absolute positioning is enabled (the default), then also for middle mouse
button. - Arrow buttons in ComboBox, Spinner, ScrollBar and TabbedPane: Show "pressed"
feedback only for left mouse button. - ScaledImageIcon: Do not throw exceptions if image was has invalid size (e.g.
not found). Instead, paint a red rectangle (similar toFlatSVGIcon
). - Fixed NPE in
FlatUIUtils.isCellEditor()
. (issue #601)