Skip to content

Releases: JFormDesigner/FlatLaf

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.

1.0-rc3

08 Feb 14:33
Compare
Choose a tag to compare

Change log

New features and improvements

  • Extras:
    • UI Inspector: Use HTML in tooltip. Display color value in same format as
      used in FlatLaf properties files. Added color preview.

Fixed bugs

  • Label and ToolTip: Fixed font sizes for <code>, <kbd>, <big>, <small>
    and <samp> tags in HTML text.
  • Fixed color of <address> tag in HTML text.
  • IntelliJ Themes: Fixed table header background when dragging column in "Dark
    Flat" and "Light Flat" themes.
  • CheckBox: Fixed background of check boxes in JIDE CheckBoxTree. (regression in 1.0-rc2)

1.0-rc2

01 Feb 10:01
Compare
Choose a tag to compare

Change log

New features and improvements

  • Button:
    • In "Flat Light" theme, use a slightly thinner border for focused buttons
      (because they already have light blue background).
    • In "Flat Dark" theme, use slightly wider border for focused buttons.
  • CheckBox and RadioButton: In "Flat Dark" theme, use blueish background for
    focused components.
  • Tree: Support disabling wide selection per component. (set client property
    JTree.wideSelection to false). (PR #245)
  • Tree: Support disabling selection painting per component. Then the tree cell
    renderer is responsible for selection painting. (set client property
    JTree.paintSelection to false).
  • JIDE Common Layer: Support JidePopupMenu.

Fixed bugs

  • Button: Fixed behavior of Enter key on focused button on Windows
    and Linux, which now clicks the focused button (instead of the default
    button).
    • On Windows, this is a regression in 1.0-rc1.
    • On macOS, the Enter key always clicks the default button, which
      is the platform behavior.
    • On all platforms, the default button can be always clicked with
      Ctrl+Enter keys, even if another button is focused.
  • CheckBox and RadioButton: Fill component background as soon as background
    color is different to default background color, even if component is not
    opaque (which is the default). This paints selection if using the component as
    cell renderer a Table, Tree or List.
  • TextComponents: Border of focused non-editable text components had wrong color.
  • Custom window decorations: Fixed top window border in dark themes when running
    in JetBrains Runtime.

1.0-rc1

18 Jan 23:21
Compare
Choose a tag to compare

Highlights

Many small improvements, polishing and fixes.
But the real highlight is the version number. 😉

FlatLaf finally leaves 0.x and enters 1.x 🥇 🎉 😄

Change log

New features and improvements

  • Button: Disabled Button.defaultButtonFollowsFocus on Windows (as on other
    platforms). If you like to keep the old behavior in your application, use:
    if(SystemInfo.isWindows) UIManager.put("Button.defaultButtonFollowsFocus",true);.
  • ComboBox, Spinner and SplitPaneDivider: Added pressed feedback to arrow buttons.
  • Slider: Support per component custom thumb and track colors via
    JSlider.setForeground(Color) and JSlider.setBackground(Color).
  • Slider: Improved thumb hover and pressed colors.
  • TextComponent: Clip placeholder text if it does not fit into visible area. (PR #229)
  • macOS: Improved font rendering on macOS when using JetBrains Runtime. (PRs #237, #239 and #241)
  • Extras: UI defaults inspector:
    • Support embedding UI defaults inspector panel into any window. See
      FlatUIDefaultsInspector.createInspectorPanel().
    • Copy selected keys and values into clipboard via context menu.
    • Support wildcard matching in filter (* matches any number of characters,
      ? matches a single character, ^ beginning of line, $ end of line).
  • IntelliJ Themes:
    • Added hover and pressed feedback to Button, CheckBox, RadioButton and
      ToggleButton. (issue #176)
    • Added "Material Theme UI Lite / Moonlight" theme.
    • Updated "Dracula", "Gradianto" and "Material Theme UI Lite" themes.

Fixed bugs

  • Button and ToggleButton: Threat Unicode surrogate character pair as single
    character and make button square. (issue #234)
  • Button and ToggleButton: ToolBar buttons now respect explicitly set background
    color. If no background color is set, then the button background is not
    painted anymore. (issue #191)
  • ToggleButton: Tab style buttons (client property JButton.buttonType is
    tab) now respect explicitly set background color.
  • TabbedPane: Fixed IndexOutOfBoundsException when using tooltip text on close
    buttons and closing last/rightmost tab. (issue #235)
  • TabbedPane: Fixed scrolling tabs with touchpads and high-resolution mouse wheels.
  • Extras: Added missing export of package
    com.formdev.flatlaf.extras.components to Java 9 module descriptor.
  • JIDE Common Layer:
    • Invoke LookAndFeelFactory.installJideExtension() when using FlatLaf UI
      delegates. (issue #230)
    • RangeSlider: Fixed slider focused colors in IntelliJ themes.
  • IntelliJ Themes:
    • Fixed menu item check colors.
    • Fixed MenuItem.underlineSelectionColor.
    • Fixed List, Tree and Table selectionInactiveForeground in light Arc themes.
    • Fixed List and Table background colors in Material UI Lite themes.
    • Fixed menu accelerator colors in Monocai theme. (issue #243)

0.46

20 Dec 18:47
Compare
Choose a tag to compare

Highlights

Slider

Clicking on slider track now immediately moves the thumb to mouse location and starts dragging the thumb.
This is how sliders work in current desktop operating systems, in smartphones and even on web pages.

slider-track-click

If snap to tick is enabled, then snapping is now done while dragging thumb.

slider-snap-on-drag

Extras: Component extension classes

Some FlatLaf UI delegates already provide additional features that can be enabled via client properties.
E.g. placeholder text for text fields:

image

Which can be enabled via client property:

myTextField.putClientProperty("JTextField.placeholderText", "Search");

Starting with this release, there are now component classes available in the FlatLaf Extras addon,
that allows easier access to these features. E.g.:

FlatTextField myTextField = new FlatTextField();
myTextField.setPlaceholderText( "Search" );

See package com.formdev.flatlaf.extras.components Javadoc for complete list of components.

Change log

New features and improvements

  • Slider and JIDE RangeSlider: Clicking on track now immediately moves the thumb
    to mouse location and starts dragging the thumb.
    Use UIManager.put( "Slider.scrollOnTrackClick", true ) to enable old behavior
    that scrolls the thumb when clicking on track.
  • Slider: Snap to ticks is now done while dragging the thumb.
    Use UIManager.put( "Slider.snapToTicksOnReleased", true ) to enable old behavior
    that snaps to ticks on mouse released.
  • Extras: Added standard component extension classes that provides easy access
    to FlatLaf specific client properties (see package com.formdev.flatlaf.extras.components
    in FlatLaf Extras).
  • Extras: Renamed tri-state check box class from
    com.formdev.flatlaf.extras.TriStateCheckBox to
    com.formdev.flatlaf.extras.components.FlatTriStateCheckBox.
    Also changed/improved API and added javadoc.
  • Extras: Renamed SVG utility class from com.formdev.flatlaf.extras.SVGUtils
    to com.formdev.flatlaf.extras.FlatSVGUtils.
  • IntelliJ Themes: Added flag whether a theme is dark to
    FlatAllIJThemes.INFOS. (issue #221)
  • JIDE Common Layer: Support TristateCheckBox.

Fixed bugs

  • Slider: Fixed painting of colored track if JSlider.inverted is true.
  • Table and TableHeader: Fixed missing right vertical grid line if using table
    as row header in scroll pane. (issues #152 and #46)
  • TableHeader: Fixed position of column separators in right-to-left component orientation.
  • ToolTip: Fixed drop shadow for wide tooltips on Windows and Java 9+. (issue #224)
  • SwingX: Fixed striping background highlighting color (e.g. alternating table
    rows) in dark themes.
  • Fixed: If text antialiasing is disabled (in OS system settings or via
    -Dawt.useSystemAAFontSettings=off), then some components still did use
    antialiasing to render text (not-editable ComboBox, ProgressBar, Slider,
    TabbedPane and multiline ToolTip). (issue #227)

0.45

05 Dec 14:31
Compare
Choose a tag to compare

Highlights

New slider look (PR #214)

The slider has a new beautiful look:

image

Improved slider customizing (PR #214)

image
image
image

JIDE RangeSlider support (PR #209)

Thank to the contribution of @basix86, FlatLaf supports JIDE RangeSlider component:

image

Change log

New features and improvements

  • Slider: New design, added hover and pressed feedback and improved customizing. (PR #214)
  • JIDE Common Layer: Support RangeSlider. (PR #209)
  • IntelliJ Themes:
    • Added "Gradianto Nature Green" theme.
    • Updated "Arc Dark", "Cyan", "Dark purple", "Gradianto", "Gray", "Gruvbox"
      and "One Dark" themes.
  • TabbedPane: Support hiding tab area if it contains only one tab. (set client
    property JTabbedPane.hideTabAreaWithOneTab to true)
  • MenuBar: Support different underline menu selection style UI defaults for
    MenuBar and MenuItem. (PR #217; issue #216)

Fixed bugs

  • Table: Do not paint last vertical grid line if auto-resize mode is not off. (issue #46)
  • Table: Fixed unstable grid line thickness when scaled on HiDPI screens. (issue #152)
  • TabbedPane: No longer add (internal) tab close button component as child to
    JTabbedPane. (issue #219)
  • Custom window decorations: Title bar was not hidden if window is in
    full-screen mode. (issue #212)

0.44

16 Nov 15:14
Compare
Choose a tag to compare

Highlights

TabbedPane improvements

It started with implementing tab scrolling using mouse wheel
and ended with one of the most powerful Swing tabbed panes...

Try the Tabs tab in the FlatLaf Demo to see it live 😉

See PRs for configuration options.

Mouse wheel scrolling (PR #187)

tabbedpane-wheel-scrolling3

"Show Hidden Tabs" button/popup (PR #190)

image

Scroll arrow buttons on both sides of the tab area (PR #211)

image

Closable tabs (PR #193)

image

Custom tab area components (PR #192)

image

Tab icon placement (PR #199)

image

Tab area alignment (PR #199)

image

Tab title alignment

image

Tab width mode (PR #199)

image

Minimum/maximum tab width (#199)

image

Change log

New features and improvements

  • TabbedPane: In scroll tab layout, added "Show Hidden Tabs" button to trailing
    side of tab area. If pressed, it shows a popup menu that contains (partly)
    hidden tabs and selecting one activates that tab. (PR #190; issue #40)
  • TabbedPane: Support forward/backward scroll arrow buttons on both sides of tab
    area. Backward button on left side, forward button on right side. Not
    applicable scroll buttons are hidden. (PR #211; issue #40)
  • TabbedPane: Support specifying default tab layout policy for all tabbed panes
    in the application via UI value TabbedPane.tabLayoutPolicy. E.g. invoke
    UIManager.put( "TabbedPane.tabLayoutPolicy", "scroll" ); to use scroll layout.
  • TabbedPane: Support tab scrolling with mouse wheel (in scroll tab layout). (PR #187; issue #40)
  • TabbedPane: Repeat scrolling as long as scroll arrow buttons are pressed. (PR #187; issue #40)
  • TabbedPane: Support adding custom components to left and right sides of tab
    area. (set client property JTabbedPane.leadingComponent or
    JTabbedPane.trailingComponent to a java.awt.Component) (PR #192; issue #40)
  • TabbedPane: Support closable tabs. (PR #193; issues #31 and #40)
  • TabbedPane: Support minimum or maximum tab widths. (set client property
    JTabbedPane.minimumTabWidth or JTabbedPane.maximumTabWidth to an integer) (PR #199)
  • TabbedPane: Support alignment of tab area. (set client property
    JTabbedPane.tabAreaAlignment to "leading", "trailing", "center" or "fill") (PR #199)
  • TabbedPane: Support horizontal alignment of tab title and icon. (set client
    property JTabbedPane.tabAlignment to SwingConstants.LEADING,
    SwingConstants.TRAILING or SwingConstants.CENTER)
  • TabbedPane: Support equal and compact tab width modes. (set client property
    JTabbedPane.tabWidthMode to "preferred", "equal" or "compact") (PR #199)
  • TabbedPane: Support left, right, top and bottom tab icon placement. (set
    client property JTabbedPane.tabIconPlacement to SwingConstants.LEADING,
    SwingConstants.TRAILING, SwingConstants.TOP or SwingConstants.BOTTOM) (PR #199)
  • Support painting separator line between window title and content (use UI value
    TitlePane.borderColor). (issue #184)
  • Extras: FlatSVGIcon now allows specifying icon width and height in
    constructors. (issue #196)
  • SplitPane: Hide not applicable expand/collapse buttons. Added tooltips to
    expand/collapse buttons. (issue #198)
  • SplitPane: Added grip to divider. Can be disabled with UIManager.put( "SplitPaneDivider.style", "plain" ). (issue #179)

Fixed bugs

  • Custom window decorations: Not visible menu bar is now ignored in layout.
  • Popups using JToolTip components did not respect their location. (issue
    #188; regression in 0.42 in fix for #164)
  • IntelliJ Themes: Added suffix "(Material)" to names of all Material UI Lite
    themes to avoid duplicate theme names. (issue #201)
  • Extras: FlatSVGIcon icons were not painted in disabled labels and disabled
    tabs. (issue #205)

0.43

06 Oct 11:37
Compare
Choose a tag to compare

Highlights

TabbedPane styling

Made tabs separator color lighter in dark themes to make it easier for the user to recognize tabbed panes.

New:
grafik

Old:
grafik

Change log

New features and improvements

  • TabbedPane: Made tabs separator color lighter in dark themes so that it is
    easier to recognize the tabbed pane.
  • TabbedPane: Added top and bottom tab insets to avoid that large tab icons are
    painted over active tab underline.
  • TabbedPane: Support hiding separator between tabs and content area (set client
    property JTabbedPane.showContentSeparator to false).
  • CheckBoxMenuItem and RadioButtonMenuItem: Improved checkmark background colors
    of selected menu items that have also an icon. This makes it is easier to
    recognize selected menu items.
  • Windows: Made scaling compatible with Windows OS scaling, which distinguish
    between "screen scaling" and "text scaling". (issue #175)

Fixed bugs

  • ComboBox: If using own JTextField as editor, default text field border is
    now removed to avoid duplicate border.
  • ComboBox: Limit popup width to screen width for very long items. (issue #182)
  • FileChooser: Fixed localizing special Windows folders (e.g. "Documents") and
    enabled hiding known file extensions (if enabled in Windows Explorer). (issue
    #178)
  • Spinner: Fixed NullPointerException in case that arrow buttons were removed
    to create button-less spinner. (issue #181)

0.42

17 Sep 14:36
Compare
Choose a tag to compare

Highlights

UI Defaults Inspector

A simple UI defaults inspector that shows a window with all UI defaults used in current theme (look and feel):

extras-FlatUIDefaultsInspector

Change log

New features and improvements

  • Demo: Improved "SplitPane & Tabs" and "Data Components" tabs.
  • Demo: Menu items "File > Open" and "File > Save As" now show file choosers.
  • InternalFrame: Support draggable border for resizing frame inside of the
    visible frame border. (issue #121)
  • FlatUIDefaultsInspector added (see FlatLaf Extras). A
    simple UI defaults inspector that shows a window with all UI defaults used in
    current theme (look and feel).
  • Made disabled text color slightly lighter in dark themes for better
    readability. (issue #174)
  • PasswordField: Support disabling Caps Lock warning icon. (issue #172)

Fixed bugs

  • TextComponents: Fixed text color of disabled text components in dark themes.
  • Custom window decorations: Fixed wrong window placement when moving window to
    another screen with different scaling factor. (issue #166)
  • Custom window decorations: Fixed wrong window bounds when resizing window to
    another screen with different scaling factor. (issue #166)
  • Fixed occasional wrong positioning of heavy weight popups when using multiple
    screens with different scaling factors. (issue #166)
  • ToolTip: Avoid that tooltip hides owner component. (issue #164)

0.41

02 Sep 10:06
Compare
Choose a tag to compare

Change log

New features and improvements

  • Added API to register packages or folders where FlatLaf searches for
    application specific properties files with custom UI defaults (see
    FlatLaf.registerCustomDefaultsSource(...) methods).
  • Demo: Show hint popups to guide users to some features of the FlatLaf Demo application.
  • Extras: FlatSVGIcon now allows specifying ClassLoader that is used to load
    SVG file. (issue #163)
  • Smoother transition from old to new theme, independent of UI complexity, when
    using animated theme change (see FlatLaf Extras).

Fixed bugs

  • Button: "selected" state was not shown. (issue #161)
  • TextArea: Update background color property if enabled or editable state
    changes in the same way as Swing does it for all other text components. (issue #147)
  • Demo: Fixed restoring last used theme on startup. (regression in 0.39)
  • Custom window decorations: Fixed iconify, maximize and close icon colors if
    window is inactive.
  • Custom window decorations: Fixed title pane background color in IntelliJ
    themes if window is inactive.
  • Fixed sub-pixel text rendering in animated theme change (see FlatLaf Extras).

Other Changes