web analytics


Hi there!
My name is Mikle and I both develop and support WebLaF library and this site.

If have any questions, found some bugs or want to propose some improvements, you can:

  • Open an issue on GitHub
    I highly recommend this option for any bugs or feature requests
  • Chat with me and other WebLaF users on Gitter
    This option is best for any questions you want to ask and receive answer as fast as possible
  • Contact me directly at mgarin@alee.com
    This might be convenient if you want to discuss some issue or ask questions privately


  1. riskiNova
    Nov 12, 2016 @ 13:34:21

    Thank you, so much !

  2. medo
    Dec 14, 2015 @ 11:19:39

    Keep on the great work 🙂

  3. Mark Zenhorst
    Nov 24, 2015 @ 15:09:07


    I want to start by saying that your laf looks great and I do want to use it.
    I’m trying to create a small Swing application but there is 1 thing I’m having trouble with.

    I have a scrollpane that has a line number class set for the RowHeaderView of the ScrollPane. This all works, until I enable the weblaf:


    I’m using the TextLineNumber class as can be downloaded from:

    With some debugging (left out) I was able to see that the actual DocumentChangedListener in the TextLineNumber class is called so everything seems to be loaded.
    Also the numbers generated are correct, they just seem to be invisible.
    I just can not put my finger on where it goes wrong.
    Can you help me out?

    The small example I have:

    JTextPane textPane = new JTextPane();
    JScrollPane scrollPane = new JScrollPane(textPane);
    TextLineNumber tln = new TextLineNumber(textPane);
    JFrame f = new JFrame(“UsingLineNumberBorder”);
    f.setSize(400, 300);

    • Mikle
      Nov 24, 2015 @ 18:02:40

      There was indeed a small issue in older text pane UI (only text pane) which caused this strange behavior. I weren’t really able to find what exactly goes wrong even though I could reproduce the issue itself, but I have added a small fix to the WebTextPaneUI which makes it work properly. I have uploaded updated build on the site which you can download and try out: http://weblookandfeel.com/downloads/prerelease/

      • Mark Zenhorst
        Nov 24, 2015 @ 22:23:27


        I was already using weblaf-complete-1.29.jar which I downloaded a couple of weeks ago. I decided to check the sizes and it was indeed changed in the same version number.
        Did my test and it is working like a charm.

        Thank you very much for the fast response and resolution.


        • Mikle
          Nov 24, 2015 @ 22:43:02

          With last phrase I meant that I JUST uploaded new build, just a few hours after your comment 🙂

          But anyway, glad it helped!

  4. zxl
    Jul 10, 2015 @ 18:47:44

    Hi, Miki. A terrible issue occur in my application.
    I do WebLookAndFeel.setDecorateAllWindows(true) before WebLookAndFeel.install().
    I key into an text field using my own input method(like sougo-pinyin in chinese) which has floating window to prompt user, then the whole frame becomes white. After minimize and restore, the frame will display.
    I’m sure it’s caused by WebLookAndFeel.setDecorateAllWindows(true).
    How can I solve it?

    • zxl
      Jul 13, 2015 @ 05:10:08

      I test it on some other computers(same OS-win7, different hardwares), it happens on some computers, but the others doesn’t.
      The same issue happened to PopupMenu.On some computers, if the menu’s boundaries beyond the boundaries of frame, it won’t display(when I use up/down key on keyboard, it display), but on the other computer it won’t happened.
      I am confused, does it have a relationship with the hardwares?

      • Mikle
        Jul 13, 2015 @ 17:35:42

        That shouldn’t be happening in general, but I already seen various issues with custom window decoration. To display custom decoration properly WebLaF uses per-pixel-transparent windows which is a native feature implemented in different OS differently and provided by Swing framework as an option.

        The way it works might depend on JDK version (different between JDK<=6 and JDK>=7) and OS (usually works perfectly on any Windows and Mac OS X, rarely works on other Unix systems). So this might occur in some specific JDK+OS mix case.

        Also earlier versions of WebLaF had some internal issues with that feature which were fixed in v1.29 prerelease versions.

        So, what versions of JDK, OS and WebLaF do you use?

        And sorry for the delay with the answer.
        Also, you might want to post ticket on GitHub or contact me directly by email for prompt response.

        • zxl
          Jul 16, 2015 @ 17:11:17

          WebLaF is the v1.29 pre-release version download from GitHub.

          Custom window decoration issue happened on win7+jre8.

          PopupMenu issue happened on win7+jre7. When works with jre8, if display point at the bound of screen the popup-menu of WebTabbedPane may move a little(It means shown at a wrong position. With jre7, it doesn’t show at all).

          Something more, I think we can calculate a more suitable position rather than always use down-popup-way. And how can I set the arrow direction of popup-menu?

          I have post two email about above-mentioned and some other questions before pre-comment, from 819171011@qq.com. Hope your reply.

          • Mikle
            Jul 17, 2015 @ 14:59:47

            WebLaF is the v1.29 pre-release version download from GitHub.

            Pre-release artifacts are not available on GitHub, they are released only this site:

            Custom window decoration issue happened on win7+jre8.
            PopupMenu issue happened on win7+jre7. When works with jre8, if display point at the bound of screen the popup-menu of WebTabbedPane may move a little(It means shown at a wrong position. With jre7, it doesn’t show at all).

            What is the exact update of the JRE/JDK you have used? It matters a lot as well.
            Also, could you provide short examples for the exact cases which have issues? That would help a lot to narrow down the issue.

            Something more, I think we can calculate a more suitable position rather than always use down-popup-way. And how can I set the arrow direction of popup-menu?

            You can always specify custom menu display way using this method in WebPopupMenu:
            public WebPopupMenu setPopupMenuWay ( final PopupMenuWay way )
            Disable the default position fix using this method:
            public WebPopupMenu setFixLocation ( final boolean fixLocation )
            And simply show it where you want afterwards.

            There are also other various methods to show popup menu:
            public WebPopupMenu showAbove ( final Component invoker )
            public WebPopupMenu showAboveStart ( final Component invoker )
            public WebPopupMenu showAboveMiddle ( final Component invoker )
            public WebPopupMenu showAboveEnd ( final Component invoker )
            public WebPopupMenu showBelow ( final Component invoker )
            public WebPopupMenu showBelowStart ( final Component invoker )
            public WebPopupMenu showBelowMiddle ( final Component invoker )
            public WebPopupMenu showBelowEnd ( final Component invoker )
            And there will be more options in future.

            I have post two email about above-mentioned and some other questions before pre-comment, from 819171011@qq.com. Hope your reply.

            I’ve got only question about WebTree tooltips onto email, you sure there was something else?

            • zxl
              Aug 07, 2015 @ 17:02:55

              Hi Mikle, sorry for the delay of reply.
              I just resend the previous email to you.

  5. zxl
    Jul 02, 2015 @ 17:43:17

    There is a bug in WebTreeModel.java line149

    public void removeNodesFromParent ( final E node )
        for ( int i = 0; i < node.getChildCount (); i++ )
            removeNodeFromParent ( ( MutableTreeNode ) node.getChildAt ( i ) );

    The node.getChildCount () will decline.

    while (node.getChildCount() > 0)
    	treeModel.removeNodeFromParent((MutableTreeNode) node.getFirstChild());

    These may be useful.

    • Mikle
      Jul 02, 2015 @ 18:02:10

      Thanks for the tip!
      I will include this change into v1.29 update.

  6. Emax
    Jun 04, 2015 @ 21:00:35

    Hi mike, how can i change the label color of WebStepProgress and WebSlider ?

    • Mikle
      Jun 05, 2015 @ 03:30:12

      For WebStepProgress – you can provide your own step components instead of the labels created by default and set color for those. Or simply retrieve default steps created from passed strings which will contain simple labels.

      For WebSlider you can use the same solutions offered for default Swing JSlider or you can also provide custom components instead of default text, here you can find some examples: http://www.javaworld.com/article/2071315/jslider-appearance-improvements.html

      With the improvements from “styling” branch which are coming later you will be able to provide all those settings altogether in an skin XML file. For now you have to use specific solutions for each case like the ones I have offered.

  7. Jose Ledon
    Mar 07, 2015 @ 10:02:03

    Hi, thanks a lot for this awesome laf, I have a question, there’s a way to avoid rendering some components? I dont wanna render the JMenuBar, JTable and another external components like JCalendar, how can I achieve this? thanks again!

    • Jose Ledon
      Mar 07, 2015 @ 21:28:10

      Or another question would be, how to get the UI from a weblaf component? if I want to change the nimbus ScrollBarUI to WebScrollBarUI, how to do that? I tried putting in defaults
      defaults.put(“ScrollBarUI”, WebScrollBar.class.getName()); OR
      defaults.put(“ScrollBarUI”, new WebScrollBar().getUI); and im getting exceptions like createUI() method not found in com.ale…… thanks in advance!

      • Mikle
        Mar 08, 2015 @ 14:02:01

        You should put canonical UI class name into defaults, for example:
        defaults.put ( “ScrollBarUI”, WebScrollBarUI.class.getCanonicalName () );
        In any case strongly recommend you not to mix UIs from different L&Fs.

        Doing that separately from installing the L&F might not work for some components, that might be true for any L&F you may want to use – either WebLaF, Nimbus or some other. Also you simply won’t be able to do that with Nimbus since it doesn’t have its own UI classes since it uses Synth UI classes. L&Fs are usually designed to be used “as one” and combining separate UI classes with other L&Fs might not give you the result you want and in some cases might even cause exceptions.

        In case you want to use some specific WebLaF components w/o installing the whole L&F you can simply use them through “Web*”-named components. For example – use WebScrollBar or WebScrollPane instead of JScrollBar or JScrollPane – they will always use WebLaF UIs regardless of what L&F is currently installed. To use those properly you might also want to initialize WebLaF managers at application launch:
        WebLookAndFeel.initializeManagers ();
        Those provide various features required for WebLaF components and UIs.

        • Jose Ledon
          Mar 08, 2015 @ 22:04:31

          thanks for the reply, I tried with defaults.put (“ScrollBarUI”, WebScrollBarUI.class.getCanonicalName () ); and it seems it worked fine, I tried too changing a JInternalFrame to extend from WebInternalFrame instead of JInternalFrame, and it worked, but i didn’t do that “WebLookAndFeel.initializeManagers ();” its necessary to do that? what is the difference?.

          doint this i dont have any exception, can i get troubles in another moment? or if it work its ok?

          • Mikle
            Mar 16, 2015 @ 12:01:11

            That call initializes various internal managers WebLaF components use, like LanguageManager or HotkeyManager. General stuff should be working fine without that initialization but some specific components might throw exceptions if those aren’t initialized.

  8. Mahmoud
    Feb 18, 2015 @ 16:28:19

    please how use weblaf componants in netbeans palette ??

    • Mikle
      Feb 18, 2015 @ 21:51:13

      There is a short instruction on NetBeans site:
      Though I cannot guarantee that all WebLaF components will act properly since some require managers initialization prior to their creation and unfortunately I didn’t find any clue about how that could be done in NetBeans – probably there might be a way through using custom NetBeans plugin, but that is only my guess.

  9. David
    Oct 24, 2014 @ 18:00:12

    Thank you so much !
    I love this Look And Feel ! Really pro !

  10. David Daedalus
    Jun 25, 2014 @ 23:49:33

    thank you so much for this – it’s exactly what I needed!

    • Mikle
      Jun 26, 2014 @ 12:22:38

      Glad to know that 🙂

      • David Daedalus
        Jun 27, 2014 @ 00:28:43

        does any documentation exist beyond the javadoc and examples application (wich rocks, btw)? i’m finding i have lots of questions about things like the style manager, what methods are available to me via webLAF that aren’t available in swing, etc.

  11. Roc Zhao
    Jun 25, 2014 @ 11:45:44

    There is bug in WevCollapsiblePane.java, line 1261

    if ( this.content != null )
    // should be “this.content”
    contentPanel.remove ( content );

    • Mikle
      Jun 26, 2014 @ 12:22:02

      Thanks for the tip! 🙂
      I have fixed this issue and will include that fix into v1.28 release.

  12. Harsha
    May 11, 2014 @ 13:06:58

    Awesome Look And Feel !! Good Luck..

  13. Simon Karmy
    Mar 31, 2014 @ 04:58:26

    Awesome Library
    Big great efforts here 🙂 🙂 <3

  14. Emax
    Feb 19, 2014 @ 00:20:46

    I love this laf, good job, really <3

  15. Alex
    Jan 24, 2014 @ 14:48:27

    Wow amazing LaF! Awesome work!

  16. madhuka
    Nov 01, 2013 @ 08:45:54

    how can i add this features as drag and drop component in net beans..

    • Mikle
      Nov 05, 2013 @ 14:37:22

      You can add WebLaF components into NetBeans palette the same way you add any other custom component there (for example SwingX component).

  17. Kevin
    Oct 24, 2013 @ 15:54:23

    Is there a way to change the default color showed in the demo to a custom color, eg.. Black and Red?

    • Mikle
      Oct 24, 2013 @ 16:00:41

      What do you mean under “default color”?

      • Kevin
        Oct 25, 2013 @ 15:46:38

        The color shown in the demo. The white color

        • Mikle
          Oct 25, 2013 @ 16:39:49

          That is the most confusing description you could ever provide 🙂

          “The color shown in the demo” – where exactly? Demo application is huge and there is a lot of places where white color is used. Point me to exact component (or part of some component) – otherwise i won’t be able to help you.

          • Simon
            Nov 18, 2013 @ 13:20:10

            I Think he mean the theme 🙂
            The question should be: Is there a black theme ?

            • Mikle
              Nov 18, 2013 @ 13:24:40

              Might be 🙂
              In that case – no, there is no black/dark theme yet, but it is already in plan and will be released together with StyleManager.

Leave a Reply