Skip to content

Releases: JFormDesigner/FlatLaf

3.7

04 Dec 12:09

Choose a tag to compare

Highlights

System File Chooser

Class SystemFileChooser (in package com.formdev.flatlaf.util) allows using operating system file dialogs in Java Swing applications.

Details: https://www.formdev.com/flatlaf/system-file-chooser/

grafik

Change Log

New features and improvements

  • System File Chooser allows using operating system file dialogs in Java
    Swing applications. (PR #988)
  • Zooming API. (PR #1051)
  • Icons:
    • Support scaling Laf icons (checkbox, radiobutton, etc). (issue #1061)
    • Scale checkbox and radiobutton icons when using text styles large, medium, small and mini.
  • TabbedPane: Added icon-only tab mode, which shows tab icons but hides tab
    titles. Tab titles are used in "Show Hidden Tabs" popup menu. (set client
    property JTabbedPane.tabWidthMode to "iconOnly")
  • TabbedPane: In scroll tab layout, propagate mouse wheel events to ancestors.
    This allows mouse wheel scrolling if JTabbedPane is inside a JScrollPane. (PR #1030)

Fixed bugs

  • CheckBox and RadioButton: Fixed styling of custom icon. Also fixed focus width
    (and preferred size) if using custom icon. (PR #1060)
  • TabbedPane: In "Show Hidden Tabs" popup menu, do not show text "x. Tab" if tab
    has icon but no title. (issue #1062)
  • TextField: Fixed wrong leading/trailing icon placement if border is set to null. (issue #1047)
  • Extras: UI defaults inspector: Exclude inspector window from being blocked by
    modal dialogs. (issue #1048)
  • JideButton, JideToggleButton, JideSplitButton and JideToggleSplitButton: Paint
    border in button style TOOLBAR_STYLE if in selected state. (issue #1045)
  • IntelliJ Themes: Fixed problem when using theme instance more than once when
    switching to that theme. (issue #990)

3.6.2

10 Oct 07:38

Choose a tag to compare

Change Log

New features and improvements

  • If using FlatLaf.registerCustomDefaultsSource( "com.myapp.themes" ) and
    named Java modules, it is no longer necessary to add opens com.myapp.themes;
    to module-info.java. (issue #1026)
  • Extras: Made animated theme change (class FlatAnimatedLafChange) smoother.

Fixed bugs

  • Tree and List: Fixed painting of rounded drop backgrounds. (issue #1023)
  • Popup: Showing tooltip in inactive window brought that window to front (made
    it active) and potentially hid the previously active window. (issue #1037)
  • Popup: No longer reuse popup windows for menus to avoid immediately closing
    dialogs on ChromeOS. (issue #1029)
  • macOS: Fixed window "flashing" when switching from a light to a dark theme (or
    vice versa). Especially when using animated theme changer (see FlatLaf Extras).

Incompatibilities

  • FlatLaf properties files are now loaded using the UTF-8 character encoding
    instead of ISO 8859-1. In usual properties files you will not notice any
    difference because they use only ASCII characters, but if you've put localized
    (non-English) texts (e.g. German umlauts) into your properties files, you need
    to convert them to UTF-8. Properties files created with the FlatLaf Theme
    Editor already use UTF-8, including in older versions. (issue #1031)

3.6.1

12 Jul 15:10

Choose a tag to compare

Change Log

  • Extras: Support JSVG 2.0.0. Minimum JSVG version is now 1.6.0. (issue #997)
  • FlatLaf window decorations (Windows 10/11 only): Improved diagonal window
    resizing on top-left and top-right window corners. Top window resize area now
    also covers iconify/maximize/close buttons. (issue #1015)
  • ToggleButton: Styling selectedForeground did not work if foreground is also styled. (issue #1017)
  • JideSplitButton: Fixed updating popup when switching theme. (issue #1000)
  • IntelliJ Themes: Fixed logging false errors when loading 3rd party .theme.json files. (issue #990)
  • Linux: Popups appeared in wrong position on multi-screen setup if primary
    display is located below or right to secondary display. (see NetBeans issue #8532)
  • macOS: Fixed popup flickering after theme change. (issue #1009)
  • macOS with JetBrains Runtime: Fixed sometimes empty popups. (issue #1019)

3.6

11 Apr 10:37

Choose a tag to compare

3.6

Change Log

New features and improvements

  • macOS: Re-enabled rounded popup border (see PR #772) on macOS 14.4+ (was disabled in 3.5.x).
  • Increased contrast of text for better readability: (PR #972; issue #762)
    • In FlatLaf Dark, FlatLaf Darcula and many dark IntelliJ themes, made all text colors brighter.
    • In FlatLaf Light, FlatLaf IntelliJ and many light IntelliJ themes, made disabled text colors slightly darker.
    • In FlatLaf macOS Light, made disabled text colors darker.
    • In FlatLaf macOS Dark, made text colors of "default" button and selected ToggleButton lighter.
  • CheckBox: Support styling indeterminate state of tri-state check boxes. (PR #936; issue #919)
  • List: Support for alternate row highlighting. (PR #939)
  • Tree: Support for alternate row highlighting. (PR #903)
  • Tree: Support wide cell renderer. (issue #922)
  • ScrollBar: Use rounded thumb also on Windows (as on macOS and Linux) and made
    thumb slightly darker/lighter. (issue #918)
  • Extras: FlatSVGIcon color filters now can access painting component to
    implement component state based color mappings. (issue #906)
  • Linux:
    • Rounded iconify/maximize/close buttons if using FlatLaf window decorations. (PR #971)
    • Added libflatlaf-linux-arm64.so for Linux on ARM64. (issue #899)
    • Use X11 window manager events to resize window, if FlatLaf window
      decorations are enabled. This gives FlatLaf windows a more "native" feeling. (issue #866)
  • IntelliJ Themes:
    • Updated to latest versions and fixed various issues.
    • Support customizing through properties files. (issue #824)
  • SwingX: Support JXTipOfTheDay component. (issue #980)
  • Support key prefixes for Linux desktop environments (e.g. [gnome], [kde]
    or [xfce]) in properties files. (issue #974)
  • Support custom key prefixes (e.g. [win10] or [test]) in properties files. (issue #649)
  • Support multi-prefixed keys (e.g. [dark][gnome]TitlePane.buttonBackground).
    The value is only used if all prefixes match current platform/theme.
  • Support new component border color to indicate success state (set client
    property JComponent.outline to success). (PR #982, issue #945)
  • Fonts: Updated Inter to v4.1.

Fixed bugs

  • Button: Fixed background and foreground colors for borderless and
    toolBarButton style default buttons (JButton.isDefaultButton() is true). (issue #947)
  • FileChooser: Improved performance when navigating to large directories with
    thousands of files. (issue #953)
  • PopupFactory: Fixed NPE on Windows 10 when owner is null. (issue #952)
  • Popup: On Windows 10, drop shadow of heavy-weight popup was not updated if
    popup moved/resized. (issue #942)
  • FlatLaf window decorations:
    • Minimize and maximize icons were not shown for custom scale factors less
      than 100% (e.g. -Dflatlaf.uiScale=75%). (issue #951)
    • Linux: Fixed occasional maximizing of window when single-clicking the
      window's title bar. (issue #637)
  • Styling: MigLayout visual padding was not updated after applying style to
    Button, ComboBox, Spinner, TextField (and subclasses) and ToggleButton. (issue #965)
  • Linux: Popups (menus and combobox lists) were not hidden when window is moved,
    resized, maximized, restored, iconified or switched to another window. (issue #962)
  • Fixed loading FlatLaf UI delegate classes when using FlatLaf in special
    application where multiple class loaders are involved. E.g. in Eclipse plugin
    or in LibreOffice extension. (issues #955 and #851)
  • HTML: Fixed rendering of <hr noshade> in dark themes. (issue #932)
  • TextComponents: selectAllOnFocusPolicy related changes:
    • No longer select all text if selection (or caret position) was changed by
      application and selectAllOnFocusPolicy is once (the default). (issue #983)
    • FormattedTextField and Spinner: selectAllOnFocusPolicy = once behaves now
      as always (was never before), which means that all text is selected when
      component gains focus. This is because of special behavior of
      JFormattedTextField that did not allow implementation of once.
    • Client property JTextField.selectAllOnFocusPolicy now also works on
      (editable) JComboBox and on JSpinner.
    • Added client property JTextField.selectAllOnMouseClick to override UI
      property TextComponent.selectAllOnMouseClick. (issue #961)
    • For selectAllOnMouseClick = true, clicking with the mouse into the text
      field, to focus it, now always selects all text, even if selectAllOnFocusPolicy is once.

Incompatibilities

  • IntelliJ Themes:
    • Theme prefix in IntelliJTheme$ThemeLaf.properties changed from [theme-name] to {theme-name}.
    • Renamed classes in package com.formdev.flatlaf.intellijthemes.materialthemeuilite from Flat<theme> to FlatMT<theme>.
    • Removed Gruvbox Dark Medium and Gruvbox Dark Soft themes.
  • Prefixed keys in properties files (e.g. [dark]Button.background or
    [win]Button.arc) are now handled earlier than before. In previous versions,
    prefixed keys always had higher priority than unprefixed keys and did always
    overwrite unprefixed keys. Now prefixed keys are handled in same order as
    unprefixed keys, which means that if a key is prefixed and unprefixed (e.g.
    [win]Button.arc and Button.arc), the one which is last specified in
    properties file is used.
    Following worked in previous versions, but now Button.arc is always 6:
    [win]Button.arc = 12
    Button.arc = 6
    This works in new (and old) versions:
    Button.arc = 6
    [win]Button.arc = 12

3.5.4

09 Dec 00:25

Choose a tag to compare

Fixes a regression in 3.5.3. If you use 3.5.3 it is strongly recommended to upgrade to 3.5.4.

Change Log

  • HTML: Fixed NPE when using HTML text on a component with null font.
    (issue #930; PR #931; regression in 3.5)
  • Linux: Fixed NPE when using FlatLaf window decorations and switching theme.
    (issue #933; regression in 3.5.3)

3.5.3

06 Dec 12:23

Choose a tag to compare

Change Log

Fixed bugs

  • HTML: Fixed wrong rendering if HTML text contains <style> tag with
    attributes (e.g. <style type='text/css'>). (issue #905; regression in 3.5.1)
  • FlatLaf window decorations:
    • Windows: Fixed possible deadlock with TabbedPane in window title area in
      "full window content" mode. (issue #909)
    • Windows: Fixed wrong layout in maximized frame after changing screen scale
      factor. (issue #904)
    • Linux: Fixed continuous cursor toggling between resize and standard cursor
      when resizing window. (issue #907)
    • Fixed sometimes broken window moving with SplitPane in window title area in
      "full window content" mode. (issue #926)
  • Popup: On Windows 10, fixed misplaced popup drop shadow. (issue #911; regression in 3.5)
  • Popup: Fixed NPE if GraphicsConfiguration is null on Windows. (issue #921)
  • Theme Editor: Fixed using color picker on secondary screen.
  • Fixed detection of Windows 11 if custom exe launcher does not specify Windows 10+
    compatibility in application manifest. (issue #916)
  • Linux: Fixed slightly different font size (or letter width) used to paint HTML
    text when default font family is Cantarell (e.g. on Fedora). (issue #912)

Other Changes

  • Class FlatPropertiesLaf now supports FlatLaf macOS themes as base themes.

3.5.2

18 Oct 11:55

Choose a tag to compare

Change Log

Fixed bugs

  • Windows: Fixed repaint issues (ghosting) on some systems (probably depending
    on graphics card/driver). This is done by setting Java system property
    sun.java2d.d3d.onscreen to false (but only if sun.java2d.d3d.onscreen,
    sun.java2d.d3d and sun.java2d.noddraw are not yet set), which disables
    usage of Windows Direct3D (DirectX) onscreen surfaces. Component rendering
    still uses Direct3D. (issue #887)
  • FlatLaf window decorations:
    • Iconify/maximize/close buttons did not fill whole title bar height, if some
      custom component in menu bar increases title bar height. (issue #897)
    • Windows: Fixed possible application freeze when using custom component that
      overrides Component.contains(int x, int y) and invokes
      SwingUtilities.convertPoint() (or similar) from the overridden method.
      (issue #878)
  • TextComponents: Fixed too fast scrolling in multi-line text components when
    using touchpads (e.g. on macOS). (issue #892)
  • ToolBar: Fixed endless loop if button in Toolbar has focus and is made
    invisible. (issue #884)

Other Changes

  • FlatLaf window decorations: Added client property JRootPane.titleBarHeight
    to allow specifying a (larger) preferred height for the title bar. (issue #897)
  • Added system property flatlaf.useRoundedPopupBorder to allow disabling
    native rounded popup borders on Windows 11 and macOS. On macOS 14.4+, where
    rounded popup borders are disabled since FlatLaf 3.5 because of occasional
    problems, you can use this to enable rounded popup borders (at your risk).

3.5.1

05 Aug 17:06

Choose a tag to compare

Fixes a regression and some bugs in 3.5. If you use 3.5 it is recommended to upgrade to 3.5.1.

Change Log

Fixed bugs

  • HTML: Fixed occasional cutoff wrapped text when using multi-line text in HTML
    tags <h1>...<h6>, <code>, <kbd>, <big>, <small> or <samp>.
    (issue #873; regression in 3.5)
  • Popup: Fixed UnsupportedOperationException: PERPIXEL_TRANSLUCENT translucency is not supported
    exception on Haiku OS when showing popup (partly) outside of window. (issue #869)
  • HiDPI: Fixed occasional wrong repaint areas when using
    HiDPIUtils.installHiDPIRepaintManager(). (see PR #864)
  • Added system property flatlaf.useSubMenuSafeTriangle to allow disabling
    submenu safe triangle (PR #490) for SWTSwing. (issue #870)

3.5

16 Jul 22:24

Choose a tag to compare

3.5

Change Log

New features and improvements

  • Table: Support rounded selection. (PR #856)
  • Button and ToggleButton: Added border colors for pressed and selected states. (issue #848)
  • Label: Support painting background with rounded corners. (issue #842)
  • Popup: Fixed flicker of popups (e.g. tooltips) while they are moving (e.g.
    following mouse pointer). (issues #832 and #672)
  • FileChooser: Wrap shortcuts in scroll pane. (issue #828)
  • Theme Editor: On macOS, use larger window title bar. (PR #779)

Fixed bugs

  • macOS: Disabled rounded popup border (see PR #772) on macOS 14.4+ because it
    may freeze the application and crash the macOS WindowServer process
    (reports vary from Finder restarts to OS restarts).
    This is a temporary change until a solution is found.
    See NetBeans issues apache/netbeans#7560 and apache/netbeans#6647.
  • FlatLaf window decorations: Window top border on Windows 10 in "full window
    content" mode was not fully repainted when activating or deactivating window. (issue #809)
  • Button and ToggleButton: UI properties [Toggle]Button.selectedForeground and
    [Toggle]Button.pressedForeground did not work for HTML text. (issue #848)
  • HTML: Fixed font sizes for HTML tags <h1>...<h6>, <code>, <kbd>,
    <big>, <small> and <samp> in HTML text for components Button, CheckBox,
    RadioButton, MenuItem (and subclasses), JideLabel, JideButton, JXBusyLabel and
    JXHyperlink. Also fixed for Label and ToolTip if using Java 11+.
  • ScrollPane: Fixed/improved border painting at 125% - 175% scaling to avoid
    different border thicknesses. (issue #743)
  • Table: Fixed painting of alternating rows below table if auto-resize mode is
    JTable.AUTO_RESIZE_OFF and table width is smaller than scroll pane (was not
    updated when table width changed and was painted on wrong side in
    right-to-left component orientation).
  • Theme Editor: Fixed occasional empty window on startup on macOS.
  • FlatLaf window decorations: Fixed black line sometimes painted on top of
    (native) window border on Windows 11. (issue #852)
  • HiDPI: Fixed incomplete component paintings at 125% or 175% scaling on Windows
    where sometimes a 1px wide area at the right or bottom component edge is not
    repainted. E.g. ScrollPane focus indicator border. (issues #860 and #582)

Incompatibilities

  • ProgressBar: Log warning (including stack trace) when uninstalling
    indeterminate progress bar UI or using JProgressBar.setIndeterminate(false)
    not on AWT thread, because this may throw NPE in FlatProgressBarUI.paint().
    (issues #841 and #830)
  • Panel: Rounded background of panel with rounded corners is now painted even if
    panel is not opaque. (issue #840)

3.4.1

29 Mar 14:18

Choose a tag to compare

Change Log

Fixed bugs

  • SplitPane: Update divider when client property JSplitPane.expandableSide changed.
  • TabbedPane: Fixed swapped back and forward scroll buttons when using
    TabbedPane.scrollButtonsPlacement = trailing (regression in FlatLaf 3.3).
  • Fixed missing window top border on Windows 10 in "full window content" mode. (issue #809)
  • Extras:
    • FlatSVGIcon color filters now support linear gradients. (PR #817)
    • FlatSVGIcon: Use log level CONFIG instead of SEVERE and allow
      disabling logging. (issue #823)
    • Added support for JSplitPane.expandableSide client property to FlatSplitPane.
  • Native libraries: Added API version check to test whether native library
    matches the JAR (bad builds could e.g. ship a newer JAR with an older
    incompatible native library) and to test whether native methods can be invoked
    (some security software allows loading native library but blocks method invocation).
  • macOS: Fixed crash when running in WebSwing. (issue #826; regression in 3.4)

Incompatibilities

  • File names of custom properties files for nested Laf classes now must include
    name of enclosing class name. E.g. nested Laf class IntelliJTheme.ThemeLaf
    used ThemeLaf.properties in previous versions, but now needs to be named
    IntelliJTheme$ThemeLaf.properties.