Skip to content

Releases: JFormDesigner/FlatLaf

1.6.1

14 Oct 20:59
Compare
Choose a tag to compare

Change log

Fixed bugs

  • Native window decorations: Catch UnsatisfiedLinkError when trying to load
    jawt.dll to avoid an application crash (Java 8 on Windows 10 only).

1.6

14 Sep 13:25
Compare
Choose a tag to compare
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 to false.
  • OptionPane: Fixed rendering of longer HTML text if it is passed as
    StringBuilder, StringBuffer, or any other object that returns HTML text in
    method toString(). (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

04 Aug 13:51
Compare
Choose a tag to compare
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.

1.4

13 Jul 09:29
Compare
Choose a tag to compare
1.4

Change log

New features and improvements

  • TextField, FormattedTextField and PasswordField: Support adding extra padding.
    (set client property JTextField.padding to Insets).
  • PasswordField: UI delegate FlatPasswordFieldUI now extends FlatTextFieldUI
    (instead of BasicPasswordFieldUI) 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 to true). (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 and 2.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 at 1.75x in Light and Dark themes
    • 2px at 1.25x and 2.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

02 Jul 09:05
Compare
Choose a tag to compare
1.3

Change log

New features and improvements

  • TextComponents, ComboBox and Spinner: Support different background color when
    component is focused (use UI values TextField.focusedBackground,
    PasswordField.focusedBackground, FormattedTextField.focusedBackground,
    TextArea.focusedBackground, TextPane.focusedBackground,
    EditorPane.focusedBackground, ComboBox.focusedBackground,
    ComboBox.buttonFocusedBackground, ComboBox.popupBackground and
    Spinner.focusedBackground). (issue #335)

Fixed bugs

  • Fixed white lines at bottom and right side of window (in dark themes on HiDPI
    screens with scaling enabled).
  • ScrollBar: Fixed left/top arrow icon location (if visible). (issue #329)
  • Spinner: Fixed up/down arrow icon location.
  • ToolTip: Fixed positioning of huge tooltips. (issue #333)

1.2

18 May 16:56
Compare
Choose a tag to compare
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 to Flat*Laf.setup() to avoid confusion
    with UIManager.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 to borderless). (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 border FlatTableHeaderBorder 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:
    • Each icon can now have its own color filter. (PR #303)
    • Use mapper function in color filter to dynamically map colors. (PR #303)
    • Color filter supports light and dark themes.
    • Getters for icon name, classloader, etc.
  • 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.
  • PopupFactory: Fixed occasional NullPointerException in FlatPopupFactory.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 of getResolutionVariants()) 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

07 Apr 12:18
Compare
Choose a tag to compare

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 and JRootPane.titleBarForeground on root pane
    to a java.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

28 Mar 16:54
Compare
Choose a tag to compare

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 property JRootPane.useWindowDecorations to false 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 with frame.dispose() and then showing it again with frame.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 is true. (issue #274)
  • Extras: UI Inspector: Fixed InaccessibleObjectException when running in Java 16.

1.1

21 Mar 14:38
Compare
Choose a tag to compare
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

image

image

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:

image

This now also works for embedded menu bars:

image

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.

image

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 (using Box.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 with UIManager.put( "TitlePane.unifiedBackground", true );
      then window title bar and menu bar use same background color as main content. (PR #268; issue #254)
  • JIDE Common Layer: Support JideButton, JideLabel, JideSplitButton, JideToggleButton and JideToggleSplitButton.
  • 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

15 Feb 14:28
Compare
Choose a tag to compare
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 when PopupFactory.getPopup() is
    invoked with parameter owner set to null.