Skip to content

Releases: JFormDesigner/FlatLaf

3.2.2

15 Oct 17:28
Compare
Choose a tag to compare

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 to right. (issue #734)
  • TabbedPane: Fixed NPE when using focusable component as tab component and
    switching theme. (issue #745)

3.2.1

04 Sep 11:59
Compare
Choose a tag to compare

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 by FlatSVGIcon.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 of JTextField. (issue #721)
  • Popop: Fixed drop shadow if popup overlaps a heavyweight component. (Windows 10 only; issue #626)

3.2

12 Aug 16:58
Compare
Choose a tag to compare
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.

grafik

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.

grafik

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:
    • Support for Windows on ARM 64-bit. (issue #443, PR #707)
    • Support toolbox-style "small" window title bar. (issue #659, PR #702)
  • 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.

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.
  • Native Windows libraries: Fixed crash when running in Java 8 and newer Java
    version is installed in PATH 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 if JFormattedTextField.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 distribute jsvg.jar with your application. Also replace
    com.kitfox.svg with com.github.weisj.jsvg in module-info.java files.
  • IntelliJ Themes: Removed all "Contrast" themes from "Material UI Lite".

3.1.1

18 Apr 13:37
Compare
Choose a tag to compare

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.
  • Native libraries: Fixed IllegalArgumentException: URI scheme is not "file"
    when using FlatLaf in WebStart. (issue #668; regression in FlatLaf 3.1)

3.1

12 Apr 12:22
Compare
Choose a tag to compare
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:

image

Table: header hover and pressed feedback

Columns in table header now show hover and pressed feedback:

image

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:
  • 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
    than TabbedPane.focusColor and TabbedPane.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 from flatlaf.jar to temporary
      folder and loaded from there.
    • Windows DLLs are now digitally signed with FormDev Software GmbH certificate.

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)
  • IntelliJ Themes:
    • Fixed default button hover background in "Solarized Light" theme. (issue #628)
    • Avoid that accent color affect some colors in some IntelliJ themes. (issue #625)
    • Updated "Hiberbee Dark" and "Material Theme UI Lite" 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 and x or y parameters are not zero. (issue #646)

Fonts: JetBrains Mono 2.304

24 Jan 17:48
Compare
Choose a tag to compare

3.0

19 Dec 16:17
Compare
Choose a tag to compare
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:

image

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.

image

Rounded outlined icons

JFileChooser, JOptionPane, JPasswordField and JTree got new modern rounded outlined icons:

image

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:
  • Rounded selection: Optionally use rounded selection in:
  • Tree: Hide default closed/opened/leaf icons by default. Set UI value
    Tree.showDefaultIcons to true to show them.
  • ToolBar: Hover effect for button groups. (PR #534)
  • Icons: New modern rounded outlined icons for JFileChooser,
    JOptionPane, JPasswordField and JTree. (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 and JXTitledPanel
    were not updated when changing default font.

2.6

18 Oct 09:31
Compare
Choose a tag to compare
2.6

Change Log

New features and improvements

  • If value of system property flatlaf.nativeLibraryPath is system, 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 to FlatSVGIcon).
  • Fixed NPE in FlatUIUtils.isCellEditor(). (issue #601)

2.5

27 Sep 14:44
Compare
Choose a tag to compare
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 and MenuItem. (issue #587)
  • MenuBar: Top level menus now use MenuBar.font instead of Menu.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
    value TabbedPane.rotateTabRuns to false. (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 to false. (issue #589)
    • Added UI value TitlePane.font to customize window title font. (issue #589)
  • 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. (was null,
    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

13 Jul 22:13
Compare
Choose a tag to compare
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.

image

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.

image

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.

image

image

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.

image

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 value TitlePane.showIconBesideTitle to true.
    • 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 or Courier 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.