The Source for Java Technology Collaboration
User: Password:



Jonathan Simon

Jonathan Simon's Blog

We have to make Swing UI's not suck

Posted by jonathansimon on July 30, 2003 at 02:02 PM | Comments (26)

I took another look at SwingSightings recently, and something struck me -- most of the user interfaces (UIs) for the Swing applications are not very good. I'm not naming names and I'm not saying everything is bad (there are in fact some pretty cool apps up there). What I am saying is that on a whole they are not so great.

Since we love Java, we can see the potential in these applications. We can see the beauty in their functionality and their crafty use of the Swing libraries. What we are ignoring is that many of them would be considered a joke if they were not written in Java. There wouldn't be anything cool about the applications or their interfaces or implementation had they not been written in Java. Its not enough to say that they are in Java anymore. They have to be in Java and good.

Another aspect has to do with subject matter. I still see too many applicatins that are development tools or developer centric. But this is a problem with Java on the desktop in general. Even now, when someone asks me what are the 'best' Java client applications I can think of, I mostly mention Java based IDEs like IDEA and Eclipse. We have to get Swing and Java out of the world of the developer and get real applications for real users being written on the platform.

And a final thought; why do people feel the need to use crazy look and feels just because their app is written in Java. Is it just because we can? I take a little different perspective. I want to write serious desktop apps, and I want to do it in Java because I like coding in Java. I am happy using the Windows look and feel on Windows and the Apple and Motif look and feels on their native platform for the majority of applications. If I am building a cool MP3 player, by all means, I going to go to town on the PLaF with the grooviest LaF I can find! But if I am designing an email client, I kindly stick to the native look and feel for normalcy. What happens is we make Swing look like a toy. "Look at the neat pictures I can draw with toy" is the image were putting out to the community.

I think we need to hunker down, build, and publicize some serious streamlined kick a-- Swing apps. Make the community think "I ought to look at Java on the desktop and Swing because I'm seeing some serious apps using it." And not thinking "Next time I need to build a chat application, Ill use Swing so I can have some neat look and feel."

Sorry for the long rant, but these things have been on my mind for a while...


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • Making Swing a Toy.....
    I guess you are correct in saying this....most of us dont get out of the SwingSet demo and the usage of LnF in the apps (just coz they can use it). This NEEDS to be changed and get down on serious Swing based apps which are sharp and FOLLOW the underlying UI patterns for making the user feel at home.
    At the same time I guess Swing Team should get down and formulate a user experience team within the group to make it more closer to the underlying OS UI patterns.

    Posted by: ravneetg on July 30, 2003 at 03:20 PM

  • I'm doing my bit
    Just launched : http://www.auctionsieve.com
    Hopefully considered slick without knowing that it's Java...

    Posted by: nevster on July 30, 2003 at 07:45 PM

  • I'm doing my bit
    Just took a look. Looks pretty good. This is more like what we need to see.

    Posted by: jonathansimon on July 30, 2003 at 07:55 PM

  • I'm doing my bit
    Off topic : they should update these forums to automatically detect urls and make them links. I hope this works :
    AuctionSieve

    Posted by: nevster on July 30, 2003 at 07:55 PM

  • Making Swing a Toy.....
    Re: the swing team comming up with a user experience team I completely disagree.

    The Swing guys need to give us the tools, the building blocks, the widgets and components to making UIs. The composition of these components into great UIs is the responsibility of the application designer.

    Usability is language agnostic and should have nothing to do with swing, the swing team, or Sun at all. Its the responsibility of the people making the programs.

    Posted by: jonathansimon on July 30, 2003 at 07:59 PM

  • Check out new best practices
    I totally agree I think Swing has real promise but to paraphrase Gosling -- "It's not always clear how to do the right thing". Which is why I think there HAS to be a new SWING book to show this way and not just "here's now to create a table".

    There are a few new things that I think can help:
    1 is JGoodies' Forms:
    http://www.jgoodies.com/

    Another is JUpiter:
    http://juipiter.sourceforge.net/

    Finally the real secret is probably XMLTalk:
    http://www.trcinc.com/knowledge/software/xmltalk/xmltalk.asp
    Everyone who has used it raves about it but it's caught in limbo. TRC won't support it, the primary developer is too busy to keep it up and TRC won't allow him to open-source it, primarily I think because it's an old style consulting company and thinks it will lose more by keeping this bit hidden than having it open.


    Posted by: mwilcox on July 30, 2003 at 08:48 PM

  • Because they can? Quite the opposite..
    You guessed that most stuff looks like a toy 'because they can'. I disagree with that, and know so from working with quite a lot of (swing) programmers.
    Its the opposite; it is because good UIs are hard.

    What programmers find lacking in Swing is a good starting point and good looking default L&F.
    For starting point I mean that there are not classes like a MainWindow,.
    When you look at an example applidation that is 'perfect' you will probably not notice 30% of the features that are there, those features make for a nice user experience. I am not talking about application features but about features like 'undo' in a JTextArea.
    Because its hard to do it right, it all of a sudden is the only option to do it all very different.
    A little gem in usability is my project and L&F from http://uic.sf.net

    Posted by: zander on July 30, 2003 at 11:52 PM

  • JGoodies
    Have a look at this (also at JGoodies):
    http://www.jGoodies.com/download/metamorphosis/metamorphosis.jnlp
    for a look at JFC L&Fs

    If you don't use WebStart try:
    http://www.jgoodies.com/freeware/metamorphosis/index.html

    Posted by: tzervos on July 31, 2003 at 05:30 AM

  • An Example App: StocksMonitor
    FYI: This is an example Swing app :
    http://www.javapractices.com/Topic170.cjp

    It is intended as an application from which beginning and intermediate swing developers can learn some useful techniques.

    I published a bug-fix release (version 1.0.1) just yesterday. The source code and javadoc are freely available.

    The community is invited to take a look at it. All suggestions for improvement are very welcome...

    Regards,
    John O'Hanley

    Posted by: johanley on July 31, 2003 at 05:49 AM

  • An Example App: StocksMonitor
    Ahhhh! My eyes!

    The title of the thread is "We have to make Swing UI's NOT suck"...

    Posted by: dat on July 31, 2003 at 08:12 AM

  • An Example App: StocksMonitor
    I said below that creating good GUIs is hard, and this little thread also points that most developers just don't have that feel to make a UI for users instead of for developers. Nothing personal; its just very hard to do correctly!
    ps. I hope you will think again about those screenshots I send you!

    Posted by: zander on July 31, 2003 at 11:45 AM

  • More rant
    I think where Sun missed biting the bullet was in not having the platform look and feel as a default. Had they risen up to this challenge, the pressure and motivation for them to have the look and feel more closely replicate the platform would have been so much higher. Like it or not, most Swing apps get built using the defaults. And this way, the focus of the Swing team has shifted away from maintaining the Platform L&F and towards Metal (adding themability and stuff) and they're always playing catch up. With Platform L&Fs, the Swing team's defense to L&F grouses is that they already have a different L&F in Metal, which is better. With Metal, their defense becomes that it is a different L&F from the platform's, and the same rules needn't apply. In the bargain, both lose out (for example, while all platforms changed their look since the early java1.1 days, it's only with Tiger that the Swing team is getting around to a Metal update . The pressure was never there. I'm sure 1.5 changes will turn out fall short of an overhaul).

    Had Metal become a big success, maybe its ubiquity would have meant a Metal look was regarded as acceptable. That's not come about. Blending into the platform still defines the kind of acceptability Jonathan is looking for.

    I do hope that with Tiger, Swing makes the platform L&F the default, and commits to it. And maybe farms out maintaining these L&Fs outside. Let them work on the architecture, and have focussed graphics companies work on the look.


    Posted by: sumitkishore on July 31, 2003 at 12:08 PM

  • XML based UIs
    By the way, what's with so many XML-Swing frameworks? In the last few days I have read about close to 40 such projects. Do they offer that compelling an advantage? It does make maintaining and updating the UI a bit easier, but counted against the background of needing to maintain 2 files for a UI, some (proprietary) sort of preprocessing, rapid unreadability of the XML files for complex apps and ugly hacks in all the frameworks for getting things like event listeners to work, is it worth it?

    If indeed, and if so many people are finding value in pursuing this approach, has Swing given a thought to standardizing this? There's just way too many frameworks like this at present.

    Posted by: sumitkishore on July 31, 2003 at 12:18 PM

  • XML based UIs
    I am not into the Swing XML frameworks. Check out http://today.java.net/pub/a/today/2003/06/10/jython.html for more on why.

    Posted by: jonathansimon on July 31, 2003 at 12:22 PM

  • An Example App: StocksMonitor
    How exactly is it an example of poor UI design? Can you be more specific?

    Posted by: johanley on July 31, 2003 at 12:26 PM

  • An Example App: StocksMonitor
    I don't believe that developers have to be designers. Developing and UI design are completely separate skills. I have friends who are Swing programmers that couln't design a GUI to save their lives. But then again, they dont design UIs. If a developer is put in a design situation, it is the responsibility of the developer to get some help to make a good looking and usable UI.

    Posted by: jonathansimon on July 31, 2003 at 01:19 PM

  • Windows PLAF needs work
    I think you've hit the nail on the head with your comments. I have been working on some Swing apps for my company and we plan to use the Windows PLAF, but we've noticed some serious problems with it:

    1). Mnemonics on menus and menu items are not always visible. Generally if you avoid using JSeparators the underlines show up OK. Strangely enough, in IBM JREs this problem goes away. Unfortunately we want to use Web Start , so we can't simply use IBM's JRE.

    2). In JavaHelp when you do a search the searched for words are "highlighted" as black text on a very dark blue background. Clearly nobody bothered to test it with the Windows PLAF.

    3). The Java Web Start client program has similar problems when you force it to run using the Windows PLAF. Obviously only tested with Metal.

    I don't know anyone who really likes the Metal look and feel.

    A more robust Windows PLAF and getting Sun to actually test stuff like JavaHelp and JWS using it would be a big help.

    Posted by: nicestepauthor on July 31, 2003 at 03:02 PM

  • XML based UIs
    I fully agree. I've developed some Swing GUIs in Jython and it's way more elegant and concise than any combination of Java and XML.

    What intrigues me is how come so many people have the same idea of Swing using Xml. Also, is the advantage of having the GUI in an uncompiled form enough to make investing in a nonstandard framework worthwhile. Do GUIs change that rapidly?

    Posted by: sumitkishore on July 31, 2003 at 07:21 PM

  • Partial retraction
    I just found out today that the behavior in point 1 is intentional and is in fact consistent with how Windows 2000 apps work.

    Point 2 is still valid.

    Posted by: nicestepauthor on August 01, 2003 at 12:02 PM

  • The path !?!?!
    Its pretty simple why the majority of Swing uis suck it is because the developers writing them dont know how to write good UIs.

    The bottom line is this, writing good uis is hard work in any language you use. Just think about it how many developers have a copy of the Windows User Experience sitting on their desk when they are developing their swing apps? How many developers know how many dialog units should be the distance between two controls? How many developers have read Tog, Alan Cooper, Shneiderman, the Macintosh Human Interface Guidelines?

    If they did, it would be much eaiser to write good ui's because many before us would have written the tools necessary to make it happen. But they don't so we are left with the api's we currently have. I mean, anyone trying to layout a dialog box using gridbag should be commended, but at the same time, scorned, because gridbag just doesn't cut it.

    Still, it was no different then when visual basic came out there are boatloads of VB apps that are horrendous why because VB opened up the ability to create UIs to a bunch of developers that dont how to create good UIs.

    Bottom line is writing crappy UIs is easy and writing good UIs is hard.

    Now granted Swing doesnt do a lot to help the situation, in fact, it does a lot to contribute to the problem. For example, buttons should not be a different size regardless of the text they contain Well, that is the default for Swing!

    There is an great group doing their part https://winlaf.dev.java.net/

    In order to not make swing UIs not suck we have to do three things

    1) Contribute to the above group
    2) Create a new group focusing on better APIs to create great UIs i.e. create a DialogLayout
    3) Popularize the fundamentals of how to write good UIs

    Posted by: brettkotch on August 04, 2003 at 07:33 AM

  • The path !?!?!
    Partially true. Agree that creating a good GUI requires hard work on any platform. However, that does not exonerate Swing. The defaults in Swing do not help. At my workplace, Swing is used in-house to build user intefaces to engineering tools. Thus, working on the LAF and consistency is not the utmost priority and UIs get built using the defaults as far as possible. No one can accuse them of looking good. The problem is as basic as Metal menus and label fonts being big, bold, helloworldy. I know this can be fixed with -Dswing.useSystemFontSettings=true. Why is this not the default even in JDK1.4.2?

    Posted by: sumitkishore on August 04, 2003 at 12:45 PM

  • JGoodies
    IMHO, JGoodies is the best swing L&F package around...and it is hosted on this site! :)

    Posted by: lstroud on August 06, 2003 at 12:07 PM

  • Other issues
    I'd like to point to start up time and above all memory usage as 2 big issues that need some major fixing in Swing.

    As far as native L&F is concerned, if that is Swing's major issue it means SWT will probably become more popular, since it fixes that issue out-of-the-box.

    Posted by: jacek on September 10, 2003 at 03:46 PM

  • JGoodies
    I've taken a look, but the last 2 examples (Show advanced UI, Show elegant UI) don't show up correctly on my system: The menubar and tree don't show up at all.

    So in this example, I'd choose the 'rooky UI' over 'elegant' anytime ;-)

    Posted by: erikd on September 18, 2003 at 02:25 AM

  • 网络营销软件
    网络营销软件
    网络营销软件
    群发软件
    群发软件
    ---
    群发软件
    网络营销软件网络推广软件网站推广软件下载引擎登陆软件论坛群发软件下载免费版
    论坛群发软件,信息群发软件,群发软件,网络营销软件,网站推广软件引擎登陆软件下载
    网站排名软件网站推广软件信息群发软件博客群发软件论坛群发软件免费下载
    群发软件,信息群发软件,博客群发软件,论坛群发软件,免费下载:群发软件系统
    推广小助手破解版
    论坛群发软件
    网站排名软件
    群发软件
    推荐给你很好的群发软件和信息群发软件和供求群发软件
    推荐给你很好的群发软件和信息群发软件和供求群发软件博客群发软件网络营销软件网络营销软件
    网站排名软件网站排名软件网站优化软件信息群发软件信息群发软件信息群发软件论坛群发软件网站推广软件网站推广软件博客群发软件博客群发软件

    群发软件群发软件博客群发软件论坛群发软件网络营销软件论坛群发软件
    信息群发软件推广软件网站推广软件网络营销软件网站推广软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件
    网站排名软件
    博客群发软件
    网站排名软件
    网站推广软件
    群发软件信息群发软件
    免费论坛群发软件
    论坛群发软件
    网站排名软件
    免费博客群发软件
    网站推广软件

    群发软件
    博客群发软件
    网站排名软件
    网站推广软件
    群发软件信息群发软件
    免费论坛群发软件
    论坛群发软件
    网站排名软件
    免费博客群发软件
    博客群发软件
    信息群发软件
    论坛群发软件
    信息群发软件
    博客群发软件
    qq群发软件
    邮件群发软件
    博客群建软件
    企业名录搜索软件
    信息群发软件
    邮件群发软件
    论坛群发软件
    博客群发软件
    网站推广软件
    网络营销软件
    全能营销破解版

    Posted by: xinxi123 on December 04, 2007 at 02:39 AM

  • wow power leveling
    wow powerleveling
    wow power leveling
    wow gold
    wow items
    feelingame.com
    wow tips
    Most Valuable WOW Power Leveling Service
    wow power leveling faq
    cheap wow power leveling
    wow power leveling
    wow powerleveling
    wow power lvl

    Posted by: wowpower on December 11, 2007 at 11:41 PM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds