Forum Controls
Spotlight Features

The Rich Engineering Heritage Behind Dependency Injection

Andrew McVeigh takes us on a tour of the rich heritage behind dependency injection, what it represents, and tells us why its here to stay.

NetBeans 6: Matisse Updates

NetBeans 6 delivers great updates to the Matisse GUI builder. Spend a few minutes with Roman Strobl and get an expert briefing on what's new and what has changed.

Introduction to Groovy Part 3

In this, the third and final installation of Andres' Introduction to Groovy series, you learn about how Groovy handles variable numbers of arguments, named parameters, currying, and more about Groovy operators. Including, some new operators.

Easier Custom Components with Swing Fuse

Swing Fuse (actually just Fuse), is a framework designed to make it easier to create your own custom desktop components. In this article, Daniel Spiewak shows you how to get started and provides sample source code you can download.

Benchmark Analysis: Guice vs Spring

Willam Louth shows how he uses JXInsight Probes to investigate probable performance issues with code bases that he is not familiar with. He also highlights possible pitfalls in creating a benchmark, as well as in the analysis of results.
Replies: 33 - Pages: 3   [ 1 2 3 | Next ]
Threads: [ Previous | Next ]
  Click to reply to this thread Reply

Do you use third party swing components in your application?

URL: James Selvakumar's Blog

At 10:48 AM on Nov 30, 2007, James Selvakumar wrote:

I'm working in a project where our user interface is designed using swing. Though swing provides it's own set of components, the default swing components available in Java SE is very limited and basic.

So we are using some third party components like jcalendar, swingx, jfreechart etc. No doubt, they are very good extension to swing and provide great functionalities, but, they do have some shortcomings like inconsistency among different look and feels.
I've explained my experience with some of the third party components in my blog http://jamesselvakumar.blogspot.com/

Do you use any third party components in your application?. Do they work well together?. It will be great, if you can share your experience with all of us.
1 . At 12:12 PM on Nov 30, 2007, Mike P wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

- Jide docking framework (very good)
- DateTimePicker (clumsy and buggy, but workable)
- an rtf text edit of sorts.
- Nimrod L&F, kunststoff L&F
- Swix for some layouts
- MIGLayout
- jfreechart
- jasperreports

And then it descends into more of a generic library list. We shouldn't just list anything that has anything to do with visible stuff. Jasperreports isn't a swing enhancement, but a way to generate a report and display it. It doesn't add any value to the day to day Swing work.
2 . At 12:34 PM on Nov 30, 2007, Andrew McVeigh DeveloperZone Top 100 wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

Good topic. I've been working on with swing-based drawing tools for a few years now. The caveat is that I tend to spend more time working with Java2D rather than Swing directly. With that in mind, some of the components and other libraries i have found useful are:

1. l2fprod common widgets (www.l2fprod.com)
--> particularly the collapsible task pane and the font chooser. these were partly the beginnings of swingx i think. It's good because Fred actually does releases (!), and breaks up the library so you can use just parts of it.

2. the xoetrope colour chooser (http://www.pushing-pixels.org)
--> very nice, very easy to integrate into the default color chooser.

3. the freehep graphics library (http://java.freehep.org/vectorgraphics/)
--> fantastic support for WMF/EMF formats, postscript, SVG etc, adapters for Graphics2D to write to these formats)

4. JICon (http://www.ftponline.com/javapro/2003_03/magazine/columns/visualcomponents/, Created by Claude Duguay)
--> for programmatically decorating icons, making composite icons etc.

5. FamFam Silk 16x16 icons (http://www.famfamfam.com/lab/icons/silk/)
--> a super slick free set of 700 common icons for toolbars etc.

6. JTattoo (www.jtattoo.net)
--> fantastic and relatively inexpensive look and feel(s) for Swing. very nice.

7. The Jazz scenegraph (http://www.cs.umd.edu/hcil/jazz/)
--> this has been superseded by Piccolo, but I prefer Jazz. It's a layer on top of Swing2D which lets you create hierarchical graphs of visual objects. You can embed swing widgets in the graph, and do all sorts of transformations on them. Want your swing app back to front and rotating in real time -- no problems ;-)

I've also had good experiences with the Jide common layer, although it's a bit large for what i require. Synthetica and Synthetica add-ons are very nice, although I have ideological issues with binding a docking framework to a look and feel.

As for 3rd party components integrating with custom look and feels -- this is a real pet peeve for me. Generally, I have found that 3rd party widgets do not provide any real look and feel support for anything other than maybe metal and windows. For instance, even the L2fprod widgets, which offer a set of styles, are difficult to make fit into a custom LnF. I had similar (but worse) problems with the SwingX widgets and Jtattoo. (Maybe I was doing something wrong, but I don't think so...)

I think however, that this problem needs to be addressed at the base Swing level rather than either the LnF or widgets level. Perhaps a standard set of graphical primitives/shapes provided by Swing (e.g. headers, title bars sections, arrows, shadows etc) that 3rd party widgets could be graphically composed of would help resolve the issue. Each LnF could then render these primitives themselves, allowing 3rd party widgets to match up with each LnF with little effort. i.e. the standard set of graphical primitives provide a bridge between the LnF and 3rd party widgets.

As it stands at the moment, i've seen a lot of 3rd party widgets with their own custom drawing code for making things like close buttons, title panes etc. Good stuff, but it shouldn't be necessary, and it can never match all LnFs.

E.g. see http://dock.javaforge.com/screens/image_03.png for the theme support for DockingFramework. It's an excellent docking library, but it shouldn't have to render its own title bars etc. I find that other docking frameworks (even Jide) also suffer from the same issues. This tends to make them look clunky.

I too had a reluctance to use SwingX because of the lack of releases and documentation (this may have been rectified). It's a shame as they look like they have done the hard work, but without regular releases they won't get the take-up. I also had problems (see above) using it with 3rd party look and feels (lots of resource/property exceptions).

I haven't had much luck finding things like (collapsible) tool palette widgets etc (like the SWT ones in eclipse). I had to make my own for those, took a while.

Cheers,
Andrew
3 . At 12:36 PM on Nov 30, 2007, Andrew McVeigh DeveloperZone Top 100 wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

I've also found Ekit to be very useful as an embedded HTML editor widget. Builds on and fixes the standard one provided with Swing:

http://www.hexidec.com/ekit.php

Cheers,
Andrew
4 . At 12:41 PM on Nov 30, 2007, Jonathan wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

I'm using JFreeChart, InfoNode Docking Windows, SwingX (mainly for JXTreeTable), and glazed lists (although it's not really a swing component itself).

Swingx itself has some inconsistencies with L&F - the first one that comes to mind is the jxdatepicker which looks very different than the normal JTextField (on windows) - although they might have fixed this since I last used it. The swingx team is very responsive to changes and they have a pretty active forum. JXTreeTable looks and functions great - although I've encountered minor issues with it. I'd really like to see a tree table as a core component in Swing.

InfoNode's "Look and Feel" theme is supposed to take colors from the system look and feel. It looked pretty good on Windows XP (with the XP theme), but it looked a bit out of place with the Windows classic theme. I wound up creating my own theme to make it look more native (heavily inspired by the L&F of NetBeans' docking framework). The API is very confusing. You can easily get lost in a sea of properties...

The following line of code speaks for itself:

rootWindow.getRootWindowProperties().getTabWindowProperties().getTabbedPanelProperties().getContentPanelProperties().getComponentProperties().setInsets(new java.awt.Insets(0,0,0,0));


Although what I find most confusing is that nearly all of the property objects have methods with the same or similar names.
5 . At 4:02 PM on Nov 30, 2007, Carl Dea wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

Here are some that come to my mind quickly


JGoodies:
http://www.jgoodies.com/

Santhosh Kumar's Weblog
https://myswing.dev.java.net/MyBlog/MySwingTree.html
http://www.jroller.com/santhosh/

SwingX, JDIC, Netbeans (not just an IDE)
JFree Chart

Nice Icons:
http://tango.freedesktop.org/Tango_Desktop_Project


-Carl

Message was edited by: Carl Dea
6 . At 8:13 PM on Nov 30, 2007, mark taylor wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

I used JUNG for a project in which I needed to create an interactive display of a really large directed graph. JUNG is oriented toward working with large 'network' graphs so it's not really usable for something that requires more information than labelled nodes; like a UML editor. Also, the selection of layout algorithms is skewed: ie there's no hierarchical layout, so I had to use a tree.

http://jung.sourceforge.net/
7 . At 10:49 PM on Nov 30, 2007, James Selvakumar wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

> Good topic. I've been working on with swing-based
> drawing tools for a few years now. The caveat is
> that I tend to spend more time working with Java2D
> rather than Swing directly. With that in mind, some
> of the components and other libraries i have found
> useful are:
>
> 1. l2fprod common widgets (www.l2fprod.com)
> --> particularly the collapsible task pane and
> the font chooser. these were partly the beginnings
> of swingx i think. It's good because Fred actually
> does releases (!), and breaks up the library so you
> can use just parts of it.
>
> 2. the xoetrope colour chooser
> (http://www.pushing-pixels.org)
> --> very nice, very easy to integrate into the
> default color chooser.
>
> 3. the freehep graphics library
> (http://java.freehep.org/vectorgraphics/)
> --> fantastic support for WMF/EMF formats,
> postscript, SVG etc, adapters for Graphics2D to
> write to these formats)
>
> 4. JICon
> (http://www.ftponline.com/javapro/2003_03/magazine/col
> umns/visualcomponents/, Created by Claude Duguay)
> --> for programmatically decorating icons, making
> composite icons etc.
>
> 5. FamFam Silk 16x16 icons
> (http://www.famfamfam.com/lab/icons/silk/)
> --> a super slick free set of 700 common icons for
> toolbars etc.
>
> 6. JTattoo (www.jtattoo.net)
> --> fantastic and relatively inexpensive look and
> feel(s) for Swing. very nice.
>
> 7. The Jazz scenegraph
> (http://www.cs.umd.edu/hcil/jazz/)
> --> this has been superseded by Piccolo, but I
> prefer Jazz. It's a layer on top of Swing2D which
> lets you create hierarchical graphs of visual
> objects. You can embed swing widgets in the graph,
> and do all sorts of transformations on them. Want
> your swing app back to front and rotating in real
> time -- no problems ;-)
>
> I've also had good experiences with the Jide common
> layer, although it's a bit large for what i require.
> Synthetica and Synthetica add-ons are very nice,
> although I have ideological issues with binding a
> docking framework to a look and feel.
>
> As for 3rd party components integrating with custom
> look and feels -- this is a real pet peeve for me.
> Generally, I have found that 3rd party widgets do
> not provide any real look and feel support for
> anything other than maybe metal and windows. For
> instance, even the L2fprod widgets, which offer a
> set of styles, are difficult to make fit into a
> custom LnF. I had similar (but worse) problems with
> the SwingX widgets and Jtattoo. (Maybe I was doing
> something wrong, but I don't think so...)
>
> I think however, that this problem needs to be
> addressed at the base Swing level rather than either
> the LnF or widgets level. Perhaps a standard set of
> graphical primitives/shapes provided by Swing (e.g.
> headers, title bars sections, arrows, shadows etc)
> that 3rd party widgets could be graphically composed
> of would help resolve the issue. Each LnF could then
> render these primitives themselves, allowing 3rd
> party widgets to match up with each LnF with little
> effort. i.e. the standard set of graphical
> primitives provide a bridge between the LnF and 3rd
> party widgets.
>
> As it stands at the moment, i've seen a lot of 3rd
> party widgets with their own custom drawing code for
> making things like close buttons, title panes etc.
> Good stuff, but it shouldn't be necessary, and it
> can never match all LnFs.
>
> E.g. see
> http://dock.javaforge.com/screens/image_03.png for
> the theme support for DockingFramework. It's an
> excellent docking library, but it shouldn't have to
> render its own title bars etc. I find that other
> docking frameworks (even Jide) also suffer from the
> same issues. This tends to make them look clunky.
>
> I too had a reluctance to use SwingX because of the
> lack of releases and documentation (this may have
> been rectified). It's a shame as they look like they
> have done the hard work, but without regular releases
> they won't get the take-up. I also had problems (see
> above) using it with 3rd party look and feels (lots
> of resource/property exceptions).
>
> I haven't had much luck finding things like
> (collapsible) tool palette widgets etc (like the SWT
> ones in eclipse). I had to make my own for those,
> took a while.
>
> Cheers,
> Andrew

That's a wonderful lot of collections. Thank you very much.

I really like the JIDE Common Layer. Great set of components. Never thought JIDE would offer that as open source!!

I will check the icon collections mentioned by you.

Has anyone used l2fprod components in NetBeans GUI builder?

I feel swingx has improved a lot, but until they release a stable version, i'm not going to use it. But it looks like swingx integrates very well with NetBeans GUI builder.

James.
8 . At 10:51 PM on Nov 30, 2007, James Selvakumar wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

> - Jide docking framework (very good)
> - DateTimePicker (clumsy and buggy, but workable)
> - an rtf text edit of sorts.
> - Nimrod L&F, kunststoff L&F
> - Swix for some layouts
> - MIGLayout
> - jfreechart
> - jasperreports

Have you tried jcalendar? So far, i've had good experience with it.

James
9 . At 1:53 AM on Dec 1, 2007, Faisal Feroz wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

> > - Jide docking framework (very good)
> > - DateTimePicker (clumsy and buggy, but
> workable)
> > - an rtf text edit of sorts.
> > - Nimrod L&F, kunststoff L&F
> > - Swix for some layouts
> > - MIGLayout
> > - jfreechart
> > - jasperreports
>
> Have you tried jcalendar? So far, i've had good
> experience with it.
>
> James

Try MigCalendar too, we have been using it in our application and it looks awesome.

Faisal Feroz
10 . At 3:05 AM on Dec 1, 2007, roger jose padilla wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

JDic project, is very, very usefull to!!!

http://www.swinglabs.org/

"The JDesktop Integration Components (JDIC) project aims to make Swing applications first-class citizens of current desktop platforms without sacrificing platform independence. Its mission is to enable seamless desktop/Java integration".
11 . At 3:03 PM on Dec 1, 2007, Geertjan wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

Wow, great thread. (And thanks Carl Dea for that link to those icons, very useful.) Personally, the 3rd party Swing libraries I use most are those from the NetBeans Platform. But I have also used several from SwingLabs, such as the Login Screen and the "Tip of the Day" component, both of which are very nice. Plus, the JDIC Native Browser is great.
12 . At 7:08 PM on Dec 1, 2007, Peter Karich wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

I have only good experience with l2fprod and swing-layout (the free layout of the netbeans ide).

Another tip ;-)
https://datatips.dev.java.net
I had only a small problem while editing JTable entries - nevertheless: very cool

Thanks to Carl for the jgoodies hint.

Peter.

Peter Karich
Swing Timetable Platform
13 . At 11:06 PM on Dec 1, 2007, James Selvakumar wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

>
> Nice Icons:
> http://tango.freedesktop.org/Tango_Desktop_Project
>
>
> -Carl

Thanks Carl, those icons are very nice.

If anyone is looking for nice icons for your swing apps, the following link may be useful:
http://www.famfamfam.com/lab/icons/silk/

More links for free (GPL, LGPL and CC license) icons, bookmark this link:
http://www.maxpower.ca/free-icons/2006/03/05/
14 . At 11:27 PM on Dec 1, 2007, James Selvakumar wrote:
  Click to reply to this thread Reply

Re: Do you use third party swing components in your application?

> the 3rd party Swing libraries I use most are those from
> NetBeans Platform.

Ofcourse, since you are a NetBeans developer :-)

But Geertjan, can i use just some of the swing components/functionalities from netbeans rather than the entire platform?

For example, if i want to provide a "Quick Search" functionality (like the one available in netbeans) for JTree, i use the JIDE common layer. And it is as simple as this:

SearchableUtils.installSearchable(myJTree);

Can I use the quick search functionality available in netbeans for my apps, without the overhead of entire platform?

thread.rss_message