Skip to content

Releases: JFormDesigner/FlatLaf

2.3

28 May 16:18
Compare
Choose a tag to compare
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:

grafik

This is the old FlatLaf Demo without "full window content":

grafik

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):

image

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 value Table.paintOutsideAlternateRows to true.
    Requires that Table.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

25 Apr 18:01
Compare
Choose a tag to compare
2.2

Change Log

New features and improvements

  • SplitPane: Allow limiting one-touch expanding to a single side (set client
    property JSplitPane.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

17 Mar 15:53
Compare
Choose a tag to compare
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.

grafik

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:

image

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 class FlatArrowButton) now paints
    arrows one pixel smaller than before. To fix this, increase parameter arrowSize by one.

2.0.2

25 Feb 16:30
Compare
Choose a tag to compare

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

25 Jan 18:12
Compare
Choose a tag to compare

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 from META-INF/versions/9/ to root folder of JARs. (issue #466)

2.0

10 Jan 12:50
Compare
Choose a tag to compare
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)

grafik

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" );
  • 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
      property JRootPane.titleBarShowIcon to false; for all windows set UI
      value TitlePane.showIcon to false).
    • OptionPane: Hide window title bar icon by default. Can be be made visibly by
      setting UI default OptionPane.showIcon to true. (issue #416)
    • No longer show the Java "duke/cup" icon if no window icon image is set. (issue #416)
  • TextField, FormattedTextField and PasswordField:
    • Support leading and trailing icons (set client property
      JTextField.leadingIcon or JTextField.trailingIcon to a
      javax.swing.Icon). (PR #378; issue #368)
    • Support leading and trailing components (set client property
      JTextField.leadingComponent or JTextField.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 to true). (PR #442)
  • PasswordField: Support reveal (or "eye") button to show password. (see UI
    value PasswordField.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). Use UIManager.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 value ToolBar.focusableButtons is true).
    • Support arrow-keys-only navigation within focusable buttons of toolbar (if
      UI value ToolBar.focusableButtons is true):
      • arrow keys move focus within toolbar
      • tab-key moves focus out of toolbar
      • if moving focus into the toolbar, focus recently focused toolbar button
  • ComboBox, Spinner, TextField and subclasses: Support specifying width of
    border (see UI value Component.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.
  • Slider: Support specifying width of thumb border (see UI value Slider.thumbBorderWidth).
  • TabbedPane: Optionally paint selected tab as card. (PR #343)
  • MenuItem:
    • Paint the selected icon when the item is selected. (PR #415)
    • Vertically align text if icons have different widths. (issue #437)
  • 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() and luma().
  • Support defining fonts in FlatLaf properties files. (issue #384)
  • Added method FlatLaf.registerCustomDefaultsSource(URL packageUrl) for JPMS. (issue #325)
  • Extras:
    • Added class FlatDesktop for easy integration into macOS screen menu
      (About, Preferences and Quit) when using Java 8.
    • FlatSVGIcon: Support loading SVG from URL (for JPMS), URI, File or
      InputStream. (issues #419 and #325)
    • FlatSVGUtils: Support loading SVG from URL (for JPMS). (issue #325)
  • SwingX:
    • New "column control" icon for JXTable that scales and uses antialiasing. (issue #434)

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 in FlatCaret 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() if UIManager.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:
    • Improved hover/pressed/selected colors of leading/trailing buttons (e.g.
      "reveal" button in password field). (issue #452)
    • Clear button no longer paints over round border. (issue #451)
  • 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 now false by default (was true
    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

18 Dec 13:58
Compare
Choose a tag to compare

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)

grafik

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" );
  • 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
      property JRootPane.titleBarShowIcon to false; for all windows set UI
      value TitlePane.showIcon to false).
    • OptionPane: Hide window title bar icon by default. Can be be made visibly by
      setting UI default OptionPane.showIcon to true. (issue #416)
    • No longer show the Java "duke/cup" icon if no window icon image is set. (issue #416)
  • TextField, FormattedTextField and PasswordField:
    • Support leading and trailing icons (set client property
      JTextField.leadingIcon or JTextField.trailingIcon to a
      javax.swing.Icon). (PR #378; issue #368)
    • Support leading and trailing components (set client property
      JTextField.leadingComponent or JTextField.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 to true). (PR #442)
  • PasswordField: Support reveal (or "eye") button to show password. (see UI
    value PasswordField.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). Use UIManager.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 value ToolBar.focusableButtons is true).
    • Support arrow-keys-only navigation within focusable buttons of toolbar (if
      UI value ToolBar.focusableButtons is true):
      • arrow keys move focus within toolbar
      • tab-key moves focus out of toolbar
      • if moving focus into the toolbar, focus recently focused toolbar button
  • ComboBox, Spinner, TextField and subclasses: Support specifying width of
    border (see UI value Component.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.
  • Slider: Support specifying width of thumb border (see UI value Slider.thumbBorderWidth).
  • TabbedPane: Optionally paint selected tab as card. (PR #343)
  • MenuItem:
    • Paint the selected icon when the item is selected. (PR #415)
    • Vertically align text if icons have different widths. (issue #437)
  • 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() and luma().
  • Support defining fonts in FlatLaf properties files. (issue #384)
  • Added method FlatLaf.registerCustomDefaultsSource(URL packageUrl) for JPMS. (issue #325)
  • Extras:
    • Added class FlatDesktop for easy integration into macOS screen menu
      (About, Preferences and Quit) when using Java 8.
    • FlatSVGIcon: Support loading SVG from URL (for JPMS), URI, File or
      InputStream. (issues #419 and #325)
    • FlatSVGUtils: Support loading SVG from URL (for JPMS). (issue #325)
  • SwingX:
    • New "column control" icon for JXTable that scales and uses antialiasing. (issue #434)

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 in FlatCaret when using
    org.jdesktop.swingx.prompt.PromptSupport.setPrompt() on a text field and
    then switching theme.

1.6.5

07 Dec 14:36
Compare
Choose a tag to compare

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)

1.6.4

16 Nov 15:03
Compare
Choose a tag to compare

Change log

  • ComboBox: Fixed regression in FlatLaf 1.6.3 that makes selected item invisible
    in popup list if DefaultListCellRenderer is used as renderer. If using
    default renderer, it works. (issue #426)

1.6.3

14 Nov 22:29
Compare
Choose a tag to compare

Change log

  • ComboBox (not editable): Fixed regression in FlatLaf 1.6.2 that may display
    text in non-editable combo boxes in bold. (issue #423)
  • Tree: Fixed editing cell issue with custom cell renderer and cell editor that
    use same component for rendering and editing. (issue #385)