Darklaf - A themeable swing Look and Feel based on Darcula-Laf
This release updates the svg renderer to be more forgiving with unimplemented features (e.g. filter primitives) or malformed svg.
JComponent.isRequestFocusEnabled
to false
for less visual noise when clicking them.<solidcolor/>
tag element. 6484b96c06d0da5b3d2c1d385ed791f1f078a2aeAllIcons
in darklaf-iconset
. d6b946f3ee8bea346a775050b27e2ccb164b5f72JComponent.isRequestFocusEnabled
property. 6c875ec0d0b19a552f39b3871dd6eb8e3eb30584Version 3.0.0
enables proper module support by providing a module-info.java
for each module.
Note that this release brings some breaking changes as packages have been moved to resolve issues with split packages:
darklaf-property-loader
the top level package is now com.github.weisj.darklaf.properties
. In particular this affects PropertyLoader
, IconLoader
and the various (svg)icon classes.com.github.weisj.darklaf.color.DarkColorModel*
in darklaf-utils
has been moved to com.github.weisj.darklaf.color
in darklaf-property-loader
IconLoader
now return IconResolver
instead.com.github.weisj.darklaf.color.ColorUtil
in darklaf-utils
has been moved to com.github.weisj.darklaf.util
com.github.weisj.darklaf.util
in darklaf-core
has been moved to com.github.weisj.darklaf.ui.util
com.github.weisj.darklaf.platform
in darklaf-native-util
has been renamed to com.github.weisj.darklaf.nativeutil
darklaf-iconset
project. If you need to use them you can depend on darklaf-iconset
and use the IconSet.ICON_LOADER
to retrieve them.darklaf-iconset
Provides a set of icons optimized for darklaf. They can also be used with other LaFs without any further setup. If you wish to customize the colors used for the icons you have to provide the colors defined in https://github.com/weisJ/darklaf/blob/master/theme/src/main/resources/com/github/weisj/darklaf/theme/icon_presets/light_icons.properties through the UIDefaults
in UIManager
.
Icons can be conveniently accessed through the AllIcons
class.
darklaf-platform-preferences
A module which exposed the native theme detection mechanism as a standalone dependency. It can be used without having to use darklaf itself. Simply create a new SystemPreferencesManager
and start listening for changes to the OS theme.
darklaf-platform-decorations
A module which exposed the native decorations feature of darklaf as a standalone dependency. It should be compatible with almost all other laf implementations (mileage may vary). The responsible class is ExternalLafDecorator
. By default the implementation tries to derive sensible colors based on other LaF properties. If you want to customize the appearance of the titlebar you can do so by providing a DecorationsColorProvider
.
See the discussion in #316 for more informations and use cases.
JInternalPane
outside of a JDesktopPane
no longer has a shadow. 4537a687f8a5f669076da8189c4a133a2842db02JSpinner
and JComboBox
inside a popup menu. 84fceaf006de28b9b4e1c08efe0365b9adfeded0ThemeSettings
are now represented by apropriate icons. #269 c6a36374ab596fb6cd142cc57bf89d89584ff5b5JPopupMenu
which has no menu items will no longer be displayed. b72f0699fadaf2b2f69965a3f60301a8ea9ab29d#
in a .properties
file when loaded through PropertyLoader
. (Not using #
was deprecated before). 1f6eb6ecf8939ad6a19f8c283bba96b65a2fad5a%
prefix instead of #
. c43cbbc62e20337910a634ceebe192b9db486f05FileTree
and corresponding classes have been removed (were deprecated before). 425289e4a531f5837288276203c7f2d5357527c3Animator
class API has been overhauled to be friendlier to use. 56dcca7a1ece8f33bd32906f9e247cb9f96b5cfcPanelPopup#addButton
to easily add a button the the title bar of a JTrabFrame
tab.ScrollBarConstants.KEY_BACKGROUND_PAINTER
property to provide the means to paint behind a scrollbar e.g. for search highlighting. The value has to be of type SizedPainter<JScrollBar>
. See https://github.com/weisJ/darklaf/blob/d7d08139ab6d56a11d0c9a3c61ed73e0d1564510/core/src/test/java/com/github/weisj/darklaf/ui/scrollPane/OverlayRSyntaxScrollPane.java for an example. e9a350268beffc06f18630db6fbbc344a4405a87FontPrototpye
to Theme
to specify a prototype font which all default fonts will be based off of. See #303 for more information. This can also be changed through the ThemeSettings
class.IconLoader
will now release resources if the loaded icon is no longer used anywhere. 126670c6d94795cd762ad03c3dd502fc41a42464ConcurrentModificationException
while theme events are dispatched. a9ae43f2b214983a44f31845750f5ad8fdfda1ac 85e556fdfe0d4defdf3496ae8ef19bac1fbb63a6JInternalFrame
outside of JDesktopPane
always appears selected. e48f23d20b857e171da83f523aec2fa9a6199f1aScrollPopupMenu
. d99c8a27ff46c989270251608f43268b30958725ThemeSettings
dialog. 32158feb37d11de81f126f4637cbd26ed58c85e6ThemeSettings
dialog doesn't reliably respond to changes in locale. 34f3815046d6f170a29723ccaa65b1ef2817919cA big thank you to everyone who contributed, reported bug or requested features!
This version is identical to v2.7.1
and only differs in the fact that it's dependency on com.github.weisj:swing-extensions-laf-support
no longer is a SNAPSHOT
version. #257
This release adds support for M1 on macOS. It also makes darklaf compliant with the module system introduced in Java 9. A future release will add full support for modules.
NOTE:
If you are using JTabFrame
with Java 16
or newer you may need to adjust your startup parameters for the best results.
All necessary information can be found in the console log upon startup.
DarkSliderUI.KEY_USE_TRACK_AS_BASELINE
.
7762fb11d0e35fddd3a8e4c7c8722c67d21b896esvg
files can now declare visual paddings in teh xml by setting
the visualPadding="top left bottom right"
property on the top level xml tag. fe19e2ebd2dfb1fa99f700b4e0c260fc8c8b24e0FileTree
is now deprecated. It's implementation will be moved to the swing-dsl
project. 9b14afba1dbff7eecb27d8e45d169365d4dd4032DarkPopupMenuUI.KEY_MAX_POPUP_SIZE
to specify the maximum size for a JPopupMenu
. If the preferred size of
the popup is larger than that it will be wrapped inside an OverlayScrollPane
.
9ef6d0677f98b09b4549c5cdc580c1d207a48a03macos.useoloredTitleBar
property can now be changed per window using DarkRootPaneUI.KEY_COLORED_TITLE_BAR
.
afd246ad86f97eccd6c6aa9a962cc7ba14d0da2fUIManager
property ComboBox.maximumRowCount
to set the maximum number of rows displayed in a combo-box popup
per theme. c3520409e9ee70c836ecb94171f3d67cb159e791JTextArea
, JtextPane
etc. prevent garbage collection of the component hierarchy.
3457eeb694d9b833486a5548015072478676d7e2UIUpdater
prevents garbage collection of the component hierarchy. 8725b204a07098154be555cbf9b183513e30f7b3JSpinner
with the mouse wheel doesn't check whether the attempted value is valid.
afaa9fb6b8bca5aabf222dbf96186b23be365b17JTabFrame
isn't removed when the operation us canceled.
5e5bba8dcc4f45ea6a6456d2190b42f2c7012cd0JTrabFrame
drop targets may qualify as a valid destination. #236 8bdfbe7b23d0eef672393de3b8c69b6ae4ab29f3JList
paints cells incorrectly after an empty cell is encountered. 40f6bac711aa6e05f67cdfee51ffaffaf0633032Theme.highContrast
as true
. b1525204714a5635a1093b0fa405c3835d3b4aa9LafManager
now supports a nice transition animation. This can be disabled using
the darkalf.animatedLafChange
system property. It's also disabled when disabling all animations through
darklaf.animations
. cd2e4747affa43c1707367b1358cc7468f017474JTree
the color of the renderer is used for painting
the row background. However, if selected the color specified in the current theme is used instead. 2a1983d0fc972c8201409bcb11fdfd7a5c1be8a4JSlider
can now be aligned along the track as its baseline using the KEY_USE_TRACK_AS_BASELINE
client-property. a8d940875739594f3164defea67bb1953f2eede3insets
).#
prefix to differentiate them from numbers. All uses of the old color
declaration style will issue warnings.'...'
, which aren't processed further.
e.g. '%palette.teal'
will be correctly resolved when patching the icons and not be overwritten by laf changes.DarkSVGIcon
is now capable if inferring its size based on its content allow. 2cf2cfa44495e01bde7a74c66a71dbd710ed4086
width
and height
of the icon.width
or height
the other is calculated relatively to keep the original aspect ratio.Dialog
font will now be replaced with the corresponding system font. d9b0de52a214d199c3b23b5abd58dd4ca3b905fcdarklaf.macOsColorTitleBar
system property to globally set whether colored title bars should be used on macOS.LafManager#enableLogging
is now deprecated due to it ignoring changes made to the log level. c757ee5e0cd492f65aba1c7a67c555a7b6d2df7dhyperlinkAccent
property to themes. 8e7b5737e1445aa003f771f0024856174fdb6489focusParent
client-property of the component. By default,
it is assumed that the action upon focus change is repainting the component. 3ff51442e18eba4ff1822d1ee1dfe7a2e2731559
7615b22c05f807681f5c2b0d3931ffa4c86595bc1.1.2.3
to version 1.1.2.4
. a2456bf7902aeaf457707bc25858b07516fb3859ThemeSettings
using the ThemeSettingsUI
class. It provides the
components used in the default implementation of ThemeSettingsPanel
already setup using the appropriate gluing code. 36ecf9c677df7910f1687be163fe2dfe19970031JList
aren't respected when painting empty rows. 1f9377abf83d6d79faa5c6e1f44114bca573e26eJTextField
doesn't update when changing the DarkTextUI.KEY_HAS_WARNING
property. 59084d38a5a941841c7921af45b9d5f1b0969ad3NumberedTextComponent
aren't properly aligned. a52cb110cec7ac79099fc641f36e22e994704a9b 4e5e6deb68393e4a7148f3ad6e19055f38f8c456DarkSVGIcon
isn't painted using proper antialiasing. #231 c2f93043bff7db3da9fccc6cb88bd07afe01cb08DarkSVGIcon
is created with the wrong size. #231 8fc941b65f1120bc91720c03f3072e6bd7ce514bQuickColorChooser
misses proper spacing between the check box and its label. 75dacb7ade9fa66105b353ad73f853abe299b1c5JTextField
shifts when navigating to either end of the content. 8b3c2705c1eebc1d6965a287c8bd9439e05a591dJTree
behaves differently than the default implementation. #228 6406f4ac8ab5d939f356815d4f321506b85369d7null
item in SimpleListCellRenderer
. 3c9056f29b79d97c7baaf8a1a90fc41f558395cdThemeSettings
dialog with no themes installed. 4ef86deda005a8a47fee531123f505afabc9edc0JTree
are ignored while revealing expanded rows during navigation. 8c08640f0414aa7184debd4e0f65dbdf0d25c611JTree
uses inconsistent meaning of focus during rendering. 8ad14cc7004b7e42a71ffd690d0afd6b6fc78872JList
client-property JList.shrinkWrap
.DerivableImageIcon
might not paint the first time due to lazy and asynchronous loading. (See here) f46e601630cdb0d5d91b9378f235976d0997c42c