WebLaf is a Java Swing Look and Feel and extended components library for cross-platform applications.
You can find some more screenshots at the end of this page!
- Simple and stylish cross-platform default theme
- Lots of useful custom Swing components
- Fully stylable through settings, painters and custom skins
- Language, settings, hotkey, tooltip and other custom managers
- Various Swing and general utilities for many possible cases
- Full support for RTL components orientation
You can find more information about the library on official site:
http://weblookandfeel.com
There were a lot of internal changes in v1.28 update - library separation, build improvements, new features and major code cleanup.
You might need to re-check which of the new artifacts you want to use since weblaf-x.xx.jar
doesn't contain dependencies anymore - weblaf-complete-x.xx.jar
contains them instead.
I also wanted to make this project more transparent and clear, so I have made a few additional improvements in v1.28 update...
Two new artifacts available - weblaf-core-x.xx.jar
and weblaf-ui-x.xx.jar
:
- The first one contains some core WebLaF managers and utilities you might want to use separately from WebLaF UI
- WebLaF UI contains all L&F classes, extended components and all features tied to them
Standalone core jar might be useful in case you have some server-side application and you want to use some features like
LanguageManager
orReflectUtils
but don't want to drag a full UI library into your server (which is a bad thing to do).
I have modified the structure of weblaf-javadoc-x.xx.jar
, which now reflects the sources structure and properly read by modern IDEs.
I have added weblaf-src-x.xx.jar
which also has the same structure as weblaf-x.xx.jar
but contains only source code of WebLaF classes.
Also WebLaF dependencies links are now available below and you can find their short description which tells why and where it is used within WebLaF. According to that information you might want to exclude some of those dependencies in case they aren't useful to you. I might add some more information later on if someone actually needs it.
I also wanted to make another important announcement - starting with v2.00 all WebLaF code will be refactored to make use of JDK 8 (or even JDK 9) features.
At that point I won't be able to implement all new features into both v1.xx and v2.xx versions anymore due to time constraints I have. So all new features will be implemented only into the v2.xx versions, but v1.xx versions will still be supported for those who cannot upgrade for the certain reasons. So basically v1.xx will be updated with critical bugfixes and probably some minor improvements i might be able to merge from v2.xx.
There are a few reasons why I decided to move forward from currently supported JDK 1.6.0_30+:
- There are some bugs in older JDKs for which I have to make some dirty workarounds - I want to get rid of those
- Older JDKs doesn't have a proper support for newer OS versions which is critical for some features and components
- I really want to make WebLaF code clean and readable and I want improve some parts of it with the new features JDK offers
- I might be looking into JavaFX later on as a second option to the WebLaF UI part
A lot of other projects I am working on are already using JDK8 and I can see the big difference. It is still a long way to go from current WebLaF state, but I wanted to make that announcement beforehand so everyone can consider it.
And don't worry, all the features announced for the v1.xx like complete StyleManager and WebDockablePane will be completed and available in later v1.xx versions.
You can always find all WebLaF artifacts in the "releases" section:
https://github.com/mgarin/weblaf/releases
Here are the direct links for the latest release artifacts:
Complete WebLaF binary with dependencies
- weblaf-complete-1.28.jar - library complete jar, contains WebLaF classes and all dependencies
WebLaF binary without dependencies
- weblaf-1.28.jar - library jar, contains only WebLaF classes
Separate WebLaF core and UI binaries without dependencies
- weblaf-core-1.28.jar - library core part jar, contains only WebLaF core classes
- weblaf-ui-1.28.jar - library UI part jar, contains only WebLaF UI classes
Core dependencies
- slf4j-api-1.7.7.jar - Logger used by all WebLaF classes
- slf4j-simple-1.7.7.jar - Logger implementation, you might want to replace it with other SLF4J implementation
- xstream-1.4.7.jar - Used by various WebLaF managers and utilities
- jericho-html-3.3.jar - Used by HtmlUtils and some other classes
- java-image-scaling-0.8.5.jar - Used for smooth image scaling
UI dependencies
- rsyntaxtextarea.jar - It is not required, unless you are using StyleEditor or RSyntaxTextArea itself
Other artifacts
- weblaf-demo-1.28.jar - executable WebLaF demo jar
- weblaf-src-1.28.zip - project sources zip
- weblaf-src-1.28.jar - project sources jar
- weblaf-javadoc-1.28.jar - JavaDoc jar
- ninepatch-editor-1.28.jar - executable Nine-Patch Editor jar
To build various WebLaF artifacts you will need Java 1.6 update 30 or any later including Java 7 and 8 and [Apache ANT] (http://ant.apache.org/).
Simply run ant
command within the "build" library folder to build all artifacts at once.
Here is a full list of usable ANT targets in WebLaF build script:
Separate artifact targets
build.core.jar
- buildweblaf-core-x.xx.jar
build.ui.jar
- buildweblaf-ui-x.xx.jar
build.weblaf.jar
- buildweblaf-x.xx.jar
build.weblaf.complete.jar
- buildweblaf-complete-x.xx.jar
build.weblaf.demo.jar
- buildweblaf-demo-x.xx.jar
build.npe.jar
- buildninepatch-editor-x.xx.jar
build.sources.zip
- buildweblaf-src-x.xx.zip
build.sources.jar
- buildweblaf-src-x.xx.jar
build.javadoc.jar
- buildweblaf-javadoc-x.xx.jar
Complex targets
build.all.artifacts
default target, build all artifacts at oncebuild.all.artifacts
- build all WebLaF binariesbuild.common.artifacts
- build common WebLaF binariesbuild.release.artifacts
- build release WebLaF binariesbuild.base.artifacts
- build separate WebLaF binariesbuild.complete.artifacts
- build single WebLaF binariesbuild.featured.artifacts
- build featured WebLaF binariesbuild.misc.artifacts
- build miscellaneous WebLaF binaries
To install WebLaF you can simply call WebLookAndFeel.install()
or use one of standard Swing L&F set methods:
public class UsageExample
{
public static void main ( String[] args )
{
// You should work with UI (including installing L&F) inside Event Dispatch Thread (EDT)
SwingUtilities.invokeLater ( new Runnable ()
{
public void run ()
{
// Install WebLaF as application L&F
WebLookAndFeel.install ();
// You can also do that with one of old-fashioned ways:
// UIManager.setLookAndFeel ( new WebLookAndFeel () );
// UIManager.setLookAndFeel ( "com.alee.laf.WebLookAndFeel" );
// UIManager.setLookAndFeel ( WebLookAndFeel.class.getCanonicalName () );
// Create you application here using Swing components
// JFrame frame = ...
// Or use similar Web* components to get access to some extended features
// WebFrame frame = ...
}
} );
}
}
You can always check what fixes, features and improvements are coming by checking the milestones page:
https://github.com/mgarin/weblaf/issues/milestones
I am not updating them very frequently, but they actually represent features I want to focus on.
New WebLaF versions appear approximately every month.
Sometimes it might take less time if there are some small but critical issue fixes, sometimes it might take more time if I am going to release some large feature (like it was with StyleManager
) as I have to modify/add a lot of code and consider a lot of stuff.
In any case WebLaF is not going to disappear anytime soon. Hopefully Swing won't disappear or become deprecated soon as well.
I would really appreciate if you will post any found bugs in issues section here, on GitHub.
You can also post them on the library official site forum, but that would require registration.
And, as always, you can send any feedback directly to my email: [email protected]
Here are some other screenshots of the custom WebLaF components:
You can find a lot more live examples in the demo application!