WebLaF is a fully open-source Look & Feel and component library written in pure Java for cross-platform desktop Swing applications.
This update mostly includes minor bug fixes for a few issues reported by users and some small internal changes.
You can find full list of issues resolved in this updated here: https://github.com/mgarin/weblaf/milestone/24?closed=1 One of the issues is still open because there will be more related changes coming in the future.
Styling
MemoryBar
WebMemoryBar
descriptor icon [ #608 ]JTabbedPane
JTabbedPane
's Font
is now properly inherited by all Tab
s [ #631 ]JSpinner
JSpinner
using NumberEditor
under Java 9+ [ #612 ]JComboBox
PluginManager
DirectoriesFilter
from PluginManager
due to FileSystemView
usage that causes exceptions in some rare casesLook and Feel
UIManager
[ #621 ]Utilities
UnselectableButtonGroup
UnselectableButtonGroup
FontUtils
for convenient FontUIResource
retrieval and UIResource
Font
replacementThere were no module changes in this update. Here is a full list of modules available in v1.2.13:
weblaf-core
- Module containing all basic managers, interfaces and classesweblaf-ui
- Module containing all components, UIs, painters, skins, managers and related classesweblaf-plugin
- Module containing PluginManager
[ wiki guide ]weblaf-ninepatch-editor
- Module containing NinePatchEditor
weblaf-demo
- Module containing DemoApplication
To use WebLaF as your application L&F you will need weblaf-core
and weblaf-ui
modules. Other modules are just extras for now.
To WebLaF in your Maven project you can use this dependency:
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>weblaf-ui</artifactId>
<version>1.2.13</version>
</dependency>
It will automatically resolve all module and 3rd-party library dependencies.
Also WebLaF Maven artifact identifiers are equal to module names mentioned above, so if you need any of the optional modules - you can simply use them by their module name in Maven dependency.
If you're not using Maven - you can find all necessary dependencies for this update here: https://github.com/mgarin/weblaf/tree/v1.2.13/lib
There were no major changes in v1.2.13 that break API.
This update mostly includes internal code refactoring and polishing, minor visual improvements for various components and bug fixes for a few issues that were uncovered in previous updates.
You can find full list of issues resolved in this updated here: https://github.com/mgarin/weblaf/milestone/23?closed=1
Styling
WebShape
implementations of IShape
have been reworked and will now properly support separate round values for different component corners for both border and background [ #598 ]Styleable.getShape ()
method have been renamed to Styleable.getPainterShape ()
to avoid clashing with JDK7+ methods in Window
components, this also fixes recently introduced problem with decorated Web
-windows not being properly displayed on the screen under JDK7+Dockable framework
WebDockableFrame
sidebar button border color for default style [ #596 ]WebDockableFrame
header buttons [ #601 ]PopupMenu
JPopupMenu
window shape cleanup on menu becoming invisible, this should fix a set of issues that could appear on Linux and even Windows systems [ #602 ]popupMenuWay
will now be preserved across multiple popup menu displays [ #603 ]MemoryBar
MemoryBarListener
in WebMemoryBar
to provide a way to execute pre- and post- GC actionsHotkeyLabel
Calendar
ButtonPopup
ButtonPopup
have been completely removed from the library due to conflicts with existing features and overall poor functioning of the component, it might get reworked and added back to the library in the future but for now I don't have any actual plans for thatUtilities
NonHiddenFilter
implementationAlignLayout
DirectoriesFilter
to accept any directory-like File
sClone.nonNullClone ( ... )
method allowing to always receive non-null
result or an exception, adjusted all classes using Clone
to use nonNullClone ( ... )
method if necessaryMerge.nonNullMerge ( ... )
methods for merging non-null
objects and retrieving non-null
merge result, adjusted all classes using Merge
to use nonNullMerge ( ... )
method if necessaryTextUtils.collectionToString ( ... )
methodJavaDoc
StyleId
mentions across all classesInternal changes
Painter
sPainterSupport
instead of custom code and callsPainter
instance anymore, those are stored in JComponent
's client properties onlySpecificPainter
implementations to implement ParameterizedPaint
use PaintParameters
instead of custom setup methodsStyleable
API, also these methods might be changed soonStyleable
APIStyleable
APIStyleable
APIPainter
installWindowDecorations ()
method that caused issues with new Painter
usageJRootPane
implementations to use StyleId.auto
for simplicitysize
setting@NotNull
and @Nullable
annotations across all modified classesThere were no module changes in this update. Here is a full list of modules available in v1.2.12:
weblaf-core
- Module containing all basic managers, interfaces and classesweblaf-ui
- Module containing all components, UIs, painters, skins, managers and related classesweblaf-plugin
- Module containing PluginManager
[ wiki guide ]weblaf-ninepatch-editor
- Module containing NinePatchEditor
weblaf-demo
- Module containing DemoApplication
To use WebLaF as your application L&F you will need weblaf-core
and weblaf-ui
modules. Other modules are just extras for now.
To WebLaF in your Maven project you can use this dependency:
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>weblaf-ui</artifactId>
<version>1.2.12</version>
</dependency>
It will automatically resolve all module and 3rd-party library dependencies.
Also WebLaF Maven artifact identifiers are equal to module names mentioned above, so if you need any of the optional modules - you can simply use them by their module name in Maven dependency.
If you're not using Maven - you can find all necessary dependencies for this update here: https://github.com/mgarin/weblaf/tree/v1.2.12/lib
There were a few changes in v1.2.12 that break API.
Changed:
Clone
usage removed from Merge
constructor, ClonePolicy
replaces it as one of constructor optionsSkipClonePolicy
and PerformClonePolicy
are two basic implementations of ClonePolicy
availableSkipClonePolicy
is now used in Merge
by default instead of null
provided as Clone
beforeNodesDragViewHandler
is not abstract anymore, nodesViewLimit
can now simply be provided in constructorRenamed:
Styleable.getShape ()
method have been renamed to Styleable.getPainterShape ()
to avoid clashing with JDK7+ methods in Window
components, this also fixes recently introduced problem with decorated Web
-windows not being properly displayed on the screen under JDK7+Removed:
ShapeUtils
rounded shape creation method have been removed as inconsistent and replaced with createBorderShape ( ... )
and createFillShape ( ... )
methods [ #598 ]ButtonPopup
have been completely removed from the library due to conflicts with existing features and overall poor functioning of the component, it might get reworked and added back to the library in the future but for now I don't have any actual plans for thatStyling
decorationBorder
property used in AbstractDecorationPainter
which change can be fired on JComponent
to forcefully update borders<hr>
and possibly some other HTML elements [ #561 ]AbstractProgressShape
which is an IShape
implementation for simple custom progress shapesWebSkin
to WebLightSkin
and DarkSkin
to WebDarkSkin
for consistencyWebLightSkin
identifier changed from weblaf.web.skin
to weblaf.light.skin
for consistencyskin.xml
and extension.xml
to more specific namesIconManager [ wiki guide ]
IconSet
addition and removal in IconManager
find*
methods in IconManager
can now return null
, while any get*
methods will either return non-null
value or throw an exceptionIconSet
into a proper base interface for any icon sets, it is now used across all related classes instead of AbstractIconSet
RuntimeIconSet
for convenient runtime icon set creationIconData
to IconSource
for consistencyImageIconData
to ImageIconSource
and SvgIconData
to SvgIconSource
for consistencyImageIconSource
and SvgIconSource
for convenient runtime icon data creationIconSetExtension
for providing skin-related IconSet
s exclusivelyTaskManager [ #576 ]
AnimationManager
TaskGroup
s available that are used by various WebLaF parts, but they can be reconfiguredTaskGroup
is an object with unique identifier that represents a specific group of tasksThumbnailGenerator
or AsyncTreeModel
now use TaskManager
for concurrent tasks executionGeneral API
Resource
interface for any custom resource that can provide InputStream
Resource
class, all related places across the code have been adjusted accordinglyDisabledCopySupplier
and TransparentCopySupplier
interfaces for convenient modified Icon
s retrievalSvgGrayscale
, SvgOpacity
and AbstractSvgAdjustment
adjustments for SvgIcon
SVG
universe
setting from all SvgIcon
s, completely separate SVGUniverse
will be used for each SvgIcon
SvgIcon
LazyContent [ #577 ]
LazyLoadTrigger
represents trigger types for data and UI loading startLazyState
represents all possible data and UI statesLazyContentListener
can be used for listening to data and UI eventsLazyPanel [ #577 ]
Container
that provides means for more convenient LazyContent
feature usageOverlay [ #568 ]
WebOverlay
was fully reworked and now has more convenient API for custom overlay locations and styling supportOverlay
is a new interface for overlays to be added to WebOverlay
componentFillOverlay
and AlignedOverlay
are two basic Overlay
implementations for most common use casesWebProgressOverlay
have also been reworked, it is based on new WebOverlay
and it can display indeterminate progress on a custom canvas overlayMemoryBar [ #589 ]
WebMemoryBar
was fully reworked and now fully supports stylingScrollPane
hovering-extending
and transparent-hovering-extending
with both bars in extending modehovering
and extending
scroll pane optionsDockablePane
WebDockablePane
now supports grouping between it's frames and has a new compact
flat style that uses itWebDockablePane
layout improvements to size distribution across visible framesareaPainter
in WebDockablePane
style, it allows restyling nine different areas of dockable paneWebDockableFrame
will now cover the whole WebDockablePane
area including sidebarsWebDockableFrame
cannot be dragged anymore when maximizedTabbedPane
TabArea
components [ #539 ]JTabbedPane
[ #74 ]StyleId
s for each particular tab in JTabbedPane
[ #578 ]tabSize
setting in TabContainerLayout
that can be used to equalize sizes of all tabs [ #554 ]equal
style for tabbedpane
that keeps all tab sizes equal [ #554 ]rotated
style to vertical
for consistency with other componentsTabMenuItem
now extends WebRadioButtonMenuItem
instead of WebMenuItem
and is now checked if represented tab is selectedMigLayout
null
tab componentnull
component is selectedMenus
JMenuBar
now uses a fully custom UI class as base - WMenuBarUI
- instead of the basic Swing oneJMenuBar
disappearance issue on newer JDK issues [ #545 ]JPopupMenu
shadow have been slightly reduced and JMenuBar
layout was adjusted to offset first menupopupmenu
for all JPopupMenu
s created by JMenu
styled
style for styled text support in all menu item componentsProgressBar
ProgressShape
for JProgressBar
progress based on AbstractProgressShape
ProgressBarPainter
StyledLabel
Link
WebLink
translation of LinkAction
text if it is a language key [ #547 ]Accordion
expanded
, expanding
, collapsed
and collapsing
states in AccordionPane
and it's headerWebAccordion
animations can now be disabled through new animated
settingWebAccordion
componentWebAccordionModel
CollapsiblePane
expanded
, expanding
, collapsed
and collapsing
states in WebCollapsiblePane
and it's header [ #552 ]WebCollapsiblePane
animations can now be disabled through new animated
settingTree
TreeUtils
for large treesWebTree
node-related methods and streamlined expand and collapse methodsDateField
setFont
, setBackground
and setForeground
are now forwarded from WebDateField
to it's text field [ #580 ]Date
and returns a copy of selected Date
when requested to avoid dealing with it's modification [ #579 ]calendar
and calendar-hover
icons from IconManager
null
date usageCalendar
double-left-big
, left-big
, right-big
and double-right-big
icons from IconManager
Switch
ActionListener
will not fire upon selection change from the code anymore, it will only fire evens when user is interacting with the component [ #400 ]ItemListener
can be used to detect all selection change events instead of ActionListener
[ #400 ] [ #587 ]ColorChooser
Color.RED
in case null
color is passed through, old color will be displayed as none
in that casenull
in DoubleColorField
, null
colors will have a special representationnull
color in WebColorChooserField
, it can be set as null
or user can erase text in the field to change color to null
WebColorChooserField
default selected color is now null
instead of Color.WHITE
WebColorChooserField
, popup chooser will have that support added laterWebColorChooserField
ComboBox
widePopup
UI property with client property usage, it can now be easily applied to JComboBox
as wellFileChooser
TextArea
AbstractTextEditorPainter
for JDK 9+ [ #558 ]SyntaxArea
transparent
preset to nonOpaque
for consistency, removed unnecessary colors provision from itsyntaxarea-scroll-transparent-hovering
style and slightly adjusted overall style structureOptionPane
MultiSplitPane
InterfaceInspector
InterfaceInspector
behaviorPluginManager
ImageIcon
usage with simple Icon
for wider icon types supportWebLookAndFeel
ImageUtils
classUtilities
ImageUtils
and removed a lot of outdated methods and features, streamlined work with Icon
s and Image
sNetUtils
to fail-fast approach to avoid hiding any exceptionsColorUtils
, there is no point to cache colors as it only makes their usage slowerClientProperty
and NullableClientProperty
utilities for convenient JComponent
client property usageVisibilityBehavior
API to provide tracked Component
of generic type and have no abstract methodsArrayListAggregator
have been replaced with ArrayListBuilder
that is a slightly better implementationHashSetBuilder
similar to ArrayListBuilder
and abstract CollectionBuilder
as their base classColorIcon
to be used instead of static ImageUtils
methodsScale
for convenient use of double
X/Y axis scale valuesClone
reflective
option for cloning any chaotic object structures, Cloneable
or notadaptive
option as redundantJavaDoc
You can find full list of issues resolved in this updated here: https://github.com/mgarin/weblaf/milestone/22?closed=1
There were no module changes in this update. Here is a full list of modules available in v1.2.11:
weblaf-core
- Module containing all basic managers, interfaces and classesweblaf-ui
- Module containing all components, UIs, painters, skins, managers and related classesweblaf-plugin
- Module containing PluginManager
[ wiki guide ]weblaf-ninepatch-editor
- Module containing NinePatchEditor
weblaf-demo
- Module containing DemoApplication
To use WebLaF as your application L&F you will need weblaf-core
and weblaf-ui
modules. Other modules are just extras for now.
To WebLaF in your Maven project you can use this dependency:
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>weblaf-ui</artifactId>
<version>1.2.11</version>
</dependency>
It will automatically resolve all module and 3rd-party library dependencies.
Also WebLaF Maven artifact identifiers are equal to module names mentioned above, so if you need any of the optional modules - you can simply use them by their module name in Maven dependency.
If you're not using Maven - you can find all necessary dependencies for v1.2.11 update here: https://github.com/mgarin/weblaf/tree/v1.2.11/lib
There were a few changes in v1.2.11 that break API.
Renamed:
com.alee.skin.web.WebSkin
was renamed & moved to com.alee.skin.light.WebLightSkin
com.alee.skin.dark.DarkSkin
was renamed to com.alee.skin.dark.WebDarkSkin
com.alee.extended.dock.SidebarVisibility
was renamed to com.alee.extended.dock.SidebarButtonVisibility
Removed/replaced:
com.alee.utils.xml.Resource
class have been replaced with com.alee.api.resource.Resource
interface that is now used for any resource-dependent features like Dictionary
or XmlSkin
, and it also has three new basic implementations - ClassResource
, FileResource
and UrlResource
Other changes:
WebLightSkin
identifier was changed from weblaf.web.skin
to weblaf.light.skin
for consistencyFocus of this update was bringing full styling support for JTabbedPane
, JDesktopPane
, JInternalFrame
and JDesktopIcon
components, providing proper hover
and in-hovered-parent
states support and some minor fixes and improvements to the styling system and various components.
Tabbed Pane
JTabbedPane
UI implementation have been revamped and now fully supports new styling system [ #35 #476 ]JTabbedPane
now supports custom WebLaF tooltips [ #202 ]Desktop Pane
JDesktopPane
, JInternalFrame
and JDesktopIcon
UI implementations have been revamped and now fully support new styling system [ #523 #476 ]JInternalFrame
resize affecting glass pane have been fixed [ #461 ]JInternalFrame
styling issues should now all bex fixed [ #383 ]Styling
hover
and in-hovered-parent
states support for all components [ #519 ]HoverManager
have been added to provide support for hover states [ wiki guide ]Table
JTableHeader
now supports custom WebLaF tooltips [ #202 #471 ]Tooltips
Label
JLabel
mnemonic functionality have been restored [ #542 ]Collapsible Pane
WebCollapsiblePane
initial state issues have been fixed [ #527 ]Dockable Pane
DockablePaneGlassLayer
have been added to better support AWT components [ #528 ]Popup
WebPopup
tracks it's close events [ #538 ]Link
ActionListener
s support for WebLink
component [ #517 ]You can find full list of issues resolved in this updated here: https://github.com/mgarin/weblaf/milestone/21?closed=1
In this update I've separated 9-patch editor into a separate module as it is mostly used as a standalone app. While extra classes in the library do not affect it's performance anyhow - extra styles do affect the initial loading time of each skin. I'm going to move all other extra components that are not related to the core L&F into separate modules as well, StyleEditor
is most probably next in the line.
Here is a full list of modules available in v1.2.10:
weblaf-core
- Module containing all basic managers, interfaces and classesweblaf-ui
- Module containing all components, UIs, painters, skins, managers and anything related to themweblaf-plugin
- Module containing PluginManager
[ wiki guide ]weblaf-ninepatch-editor
- Module containing NinePatchEditor
weblaf-demo
- Module containing DemoApplication
To use WebLaF as your application L&F you will need weblaf-core
and weblaf-ui
modules. Other modules are just extras for now.
To WebLaF in your Maven project you can use this dependency:
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>weblaf-ui</artifactId>
<version>1.2.10</version>
</dependency>
It will automatically resolve all module and 3rd-party library dependencies.
Also WebLaF Maven artifact identifiers are equal to module names mentioned above, so if you need any of the optional modules - you can simply use them by their module name in Maven dependency.
If you're not using Maven - you can find all necessary dependencies for v1.2.10 update here: https://github.com/mgarin/weblaf/tree/v1.2.10/lib
This update brings first look at brand new styling system that is now used by most components allowing agile configuration of their styles through XML-based style files. Components that are not yet fully supported will be updated in next few smaller updates.
Due to the size of the update - it's approximately 800 commits away from previous version - I'll only be listing major and most noticeable changes and added features.
Also a lot of APIs have been changed or completely replaced, some of the features have been replaced or even removed, so you can consider this update as an almost fresh start for the library.
While I generally do recommend moving over to this new version - it might take time and extra effort to port from older ones. But if you have any questions about how to migrate from previous versions - feel free to submit a question to issue tracker, ask me online in our gitter chat or write an email directly to me.
Styling [ wiki guide ]
Skin
s and SkinExtension
s and set into StyleManager
Skin
and SkinExtension
implementations are XML-basedSkin
contains styles for all existing component types and can contain custom ones as wellSkinExtension
can only contain custom styles that are not used by default componentsSkinListener
can be used to listen to global skin changesStyleListener
can be used to listen to component instance style changesIcons [ #348 ] [ wiki guide ]
SvgIcon
and IconSet
sIconSet
s and set into IconManager
IconSet
implementations are XML-based and mostly use SVG iconsIconManager
implementation is just a preview and it will receive major improvementsSkins & IconSets
WebSkin
and DarkSkin
- basically light & dark themesWebIconSet
and DarkIconSet
- for light & dark themesAnimation
AnimationManager
have been added with this updateAnimationManager
provides unified API for playing various Transition
s through AnimationPipeline
sAnimationPipeline
is used to unify multiple Transitions
to improve overall performanceTransition
instance represents transition from value A to B of the same typeTransitionListener
s can be used to receive Transition
eventsTransitionType
implementations define types for which transitions are supportedEventHandler
implementation can be provided into AnimationManager
to define thread used for eventsEasing
and FrameRate
implementations can be used to define Transition
settingsWebStyledLabel [ wiki guide ]
WebStyledLabel
is a brand new component that supports styled text displayWebStyledLabel
is now the preferred option for rendering simple styled text instead of HTML contentWebStyledLabel
supports both text style syntax and custom style ranges set from the codeWebStyledLabel
style can be fully customizedStyledLabelText
and AbstractStyledTextContent
are core of styled label and also IContent
implementations therefore they can be used in other components to provide styled text supportLink [ wiki guide ]
WebLink
have been revamped and it's style can now be fully customizedWebLink
is now based on WebStyledLabel
and thus supports styled text contentWebLink
can now perform custom actions provided through LinkAction
implementationsUrlLinkAction
, FileLinkAction
and EmailLinkAction
are default LinkAction
implementationsDockable Framework [ #37 ] [ wiki guide ]
WebDockablePane
and WebDockableFrame
are the first implementation of dockable frameworkWebDockablePane
supports saving and lazily restoring it's stateWebDockablePane
and WebDockableFrame
styles can be fully customizedDockableFrameListener
can be used to track frame state changesMulti Split Pane [ #477 ]
WebMultiSplitPane
is the first implementation of multi-split paneWebMultiSplitPane
supports saving and restoring it's stateWebMultiSplitPane
style can be fully customizedMultiSplitResizeListener
can be used to track view resize eventsMultiSplitExpansionListener
can be used to track view expansion eventsCollapsible Pane & Accordion [ #494 ]
WebCollapsiblePane
have been revamped and it's style can now be fully customizedWebCollapsiblePane
now supports saving and restoring it's stateCollapsiblePaneListener
can be used to track expansion and collapse eventsWebAccordion
have been revamped and it's style can now be fully customizedWebAccordion
now supports saving and lazily restoring it's stateAccordionListener
can be used to track expansion and collapse eventsPopup [ wiki guide ]
WebPopup
is a brand new implementation of popup window made for convenient useWebPopup
style can be fully customizedPopupListener
can be used to listen to popup window eventsWebCanvas
WebCanvas
is a brand new light component that can be used for any custom purposesWebCanvas
extends Swing JComponent
unlike java.awt.Canvas
which extends AWT Component
WebCanvas
supports customizable Painter
and has easily modifiable decoration statesWebDateField
WebDateField
have been revamped and it's style can now be fully customizedDateListener
can be used to track date selection eventsPlugin Manager [ wiki guide ]
PluginManager
is a new feature allowing you to conveniently load custom plugins in runtimePluginManager
is implemented in a separate plugin
modulePlugin
s can be loaded from JAR files or provided directly in the code if already loadedLanguage Manager [ #272 ] [ wiki guide ]
LanguageManager
now supports different Locale
sLanguage
instances can now be used to simultaneously translate to multiple languagesLanguageManager
will not adjust JVM Locale
by default anymore [ #457 #68 ]LanguageLocaleUpdater
can be used to automatically adjust JVM Locale
[ #457 ]LanguageManager
have been revamped and optimized to increase startup and overall performanceNotification Manager
NotificationManager
have been revamped to separate notification types and fix memory leaksNotificationManager
can now display notifications either outside or inside of the application windowWebNotification
have been revamped and now extends WebPopup
WebNotification
style can now be fully customizedUtilities
Clone
is a new configurable utility class that provides advanced options for cloning various objectsMerge
is a new configurable utility class that provides advanced options for merging various object together@NotNull
and @Nullable
annotations for code writing and usage convenienceObjects
, Supplier
, Consumer
etc, they will be replaced in v2.0.0Demo Application
DemoApplication
is available in a separate demo
module that contains multiple code examplesDemoApplication
now showcases source code and styles of presented examples in separate dockable framesDemoApplication
uses it's own skin extensions for various components and icon setsWebCanvas
have been added and it's style can be fully customizedWebImage
have been revamped and it's style can now be fully customizedWebLabel
have been revamped and it's style can now be fully customizedWebStyledLabel
have been revamped and it's style can now be fully customizedWebToolTip
have been revamped and it's style can now be fully customizedWebLink
have been revamped and it's style can now be fully customizedWebButton
have been revamped and it's style can now be fully customizedWebSplitButton
have been revamped and it's style can now be partially customizedWebToggleButton
have been revamped and it's style can now be fully customizedWebCheckBox
have been revamped and it's style can now be fully customizedWebRadioButton
have been revamped and it's style can now be fully customizedWebTristateCheckBox
have been revamped and it's style can now be fully customizedWebPanel
have been revamped and it's style can now be fully customizedGroupPane
have been added and it's style can be fully customizedWebInnerPopup
haven't been changed, but it's style can now be fully customizedWebScrollBar
have been revamped and it's style can now be fully customizedWebViewport
have been revamped and it's style can now be fully customizedWebScrollPane
have been revamped and it's style can now be fully customizedWebProgressBar
have been revamped and it's style can now be fully customizedWebSplitPaneDivider
have been added and it's style can be fully customizedWebSplitPane
have been revamped and it's style can now be fully customizedWebMultiSplitPaneDivider
have been added and it's style can be fully customizedWebMultiSplitPane
have been added and it's style can be fully customizedWebSeparator
have been revamped and it's style can now be fully customizedWebSlider
have been adjusted, but it's style isn't fully customizable yetWebMenuBar
have been revamped and it's style can now be fully customizedWebMenu
have been revamped and it's style can now be fully customizedWebMenuItem
have been revamped and it's style can now be fully customizedWebCheckBoxMenuItem
have been revamped and it's style can now be fully customizedWebRadioButtonMenuItem
have been revamped and it's style can now be fully customizedWebPopupMenu
have been adjusted, but it's style isn't fully customizable yetWebPopupMenuSeparator
have been revamped and it's style can now be fully customizedWebTextField
have been adjusted, but it's style isn't fully customizable yetWebPasswordField
have been adjusted, but it's style isn't fully customizable yetWebFormattedTextField
have been adjusted, but it's style isn't fully customizable yetWebPathField
haven't been changed, but it's style can now be fully customizedWebColorChooserField
haven't been changed, but it's style can now be partially customizedWebFileChooserField
haven't been changed, but it's style can now be fully customizedWebSpinner
have been revamped and it's style can now be fully customizedWebTextArea
have been adjusted, but it's style isn't fully customizable yetWebEditorPane
have been adjusted, but it's style isn't fully customizable yetWebTextPane
have been adjusted, but it's style isn't fully customizable yetWebList
have been revamped and it's style can now be fully customizedWebFileList
haven't been changed, but it's style can now be fully customizedWebComboBox
have been revamped and it's style can now be fully customizedWebRootPane
have been revamped and it's style can now be fully customizedWebPopOver
have been adjusted, but it's style isn't fully customizable yetWebCalendar
have been adjusted, but it's style isn't fully customizable yetWebDateField
have been revamped and it's style can now be fully customizedWebTableHeader
have been adjusted, but it's style isn't fully customizable yetWebTable
have been revamped and it's style can now be fully customizedWebFileTable
have been adjusted and it's style can now be fully customizedWebTree
have been revamped and it's style can now be fully customizedWebExTree
have been revamped and it's style can now be fully customizedWebAsyncTree
have been revamped and it's style can now be fully customizedWebFileTree
have been adjusted and it's style can now be fully customizedWebToolBar
have been adjusted, but it's style isn't fully customizable yetWebToolBarSeparator
have been revamped and it's style can now be fully customizedWebStatusBar
have been revamped and it's style can now be fully customizedWebMemoryBar
have been adjusted and it's style can now be fully customizedWebDesktopPane
have been revamped and it's style can now be fully customizedWebInternalFrame
have been revamped and it's style can now be fully customizedWebDesktopIcon
have been revamped and it's style can now be fully customizedWebPopup
have been added and it's style can be fully customizedWebNotification
have been adjusted and it's style can now be fully customizedWebWindow
have been revamped and it's style can now be fully customizedWebDialog
have been revamped and it's style can now be fully customizedWebFrame
have been revamped and it's style can now be fully customizedWebOptionPane
have been revamped and it's style can now be fully customizedWebColorChoserPanel
have been adjusted, but it's style isn't fully customizable yetWebColorChoser
have been adjusted, but it's style isn't fully customizable yetWebFileChooser
have been adjusted, but it's style isn't fully customizable yetWebTabbedPane
have been adjusted, but it's style isn't fully customizable yetWebDocumentPane
have been adjusted, but it's style isn't fully customizable yetWebHotkeyLabel
have been adjusted and it's style can now be fully customizedWebHotkeyLabel
have been adjusted, but it's style isn't fully customizable yetWebSwitch
have been adjusted, but it's style isn't fully customizable yetWebLanguageChooser
have been added and it's style can be fully customizedWebTreeFilterField
have been revamped, but it's style isn't fully customizable yetWebCheckBoxList
have been adjusted and it's style can now be fully customizedWebCheckBoxTree
have been adjusted and it's style can now be fully customizedWebExCheckBoxTree
have been adjusted and it's style can now be fully customizedWebFileDrop
have been adjusted, but it's style isn't fully customizable yetWebCollapsiblePane
have been revamped and it's style can now be fully customizedWebAccordion
have been revamped and it's style can now be fully customizedWebSyntaxArea
have been adjusted, but it's style isn't fully customizable yetWebSyntaxPanel
have been adjusted, but it's style isn't fully customizable yetWebComponentPane
have been adjusted, but it's style isn't fully customizable yetWebDirectoryChooser
have been adjusted and it's style can now be fully customizedWebDockablePane
have been added and it's style can be fully customizedWebDockableFrame
have been added and it's style can be fully customizedInterfaceTree
have been added, but it's style isn't fully customizable yetInterfaceInspector
have been added, but it's style isn't fully customizable yetNinePatchEditor
have been adjusted, but it's style isn't fully customizable yetStyleEditor
have been adjusted, but it's style isn't fully customizable yetWebBreadcrumb
have been revamped and it's style can now be fully customizedWebLaF is now split into a few basic modules that you will have to include to make sure it works properly (along with all of the dependencies).
core
- Module containing all basic managers, interfaces and classesui
- Module containing all the UI-related code (components, UIs, painters, skins, managers etc)plugin
- Module containing PluginManager
[ wiki guide ]demo
- Module containing DemoApplication
and all related classesMost commonly you will need core
and ui
modules to use WebLaF in your application.
Since there have been some major changes in project structure and tools used - there won't be anymore unified JARs that contain all modules and dependencies.
That being said, I do understand that not everyone are using Maven, so I will keep all necessary dependencies available in /lib
folder for all future updates.
You can find all necessary dependencies for v1.2.9 update here: https://github.com/mgarin/weblaf/tree/v1.2.9/lib
Release Notes
Starting with this release all release notes will be included into a big update posts which will be added on WebLaF official site the same day or on the next day after the release.
Project
core
, ui
and demo
Libraries
Features
Improvements
repeat
methods addedBug fixes
Demo application
Release Notes
It might seem that not a lot of work was done in the last few months, but its not true. I have completed the hardest part of components styling - I was able to solve all the problems I have encountered without making any "stinky" workarounds in the code. So in the end - there will be a few styling layers for each component and you can modify each of them to alter component's view.
So this update introduces first beta version of StyleManager and affects a lot of aspects of WebLaF library. Be aware that it might make your projects non-compilable as some of deprecated features were removed or replaced with their updated versions. Such changes might occur a few times more until the final stable release. To make things clear i have posted a large separate guide about new styling system and included features: https://github.com/mgarin/weblaf/wiki/How-to-use-StyleManager
This update does not provide a fully-functional StyleManager version but gives you a brief preview of WebLaF styling system and helps you to prepare for upcoming changes. In next few updates i am going to release all of the rest specific Painter implementations for Swing and WebLaF components to complete StyleManager, so WebLaF will finally become fully stylable and flexible. Futher updates will include the rest of the features everyone requested a lot of times like Dark theme and additional components.
So hold tight and be ready for more exciting updates!
Features
Improvements
Bug fixes
Demo application
Release Notes
Within next few updates i will add a lot of custom component painters and other StyleManager-related stuff (including the StyleManager itself) as this is the most requested feature so far and i will try to finish it as fast as it is possible. With this update first full custom painters support was added into WebPopupMenuUI and WebScrollBarUI classes.
Features
Improvements
Bug fixes
Demo application
Features
Improvements
Bug fixes
Features
Improvements
Bug fixes