Extreme GUI Makeover

The session was a lot more fluff than useful stuff and often went for showy graphics instead of actual usability which is a shame. There were some good ideas though.

  • Use a modern L&F - they suggested Nimbus. Gosh it's ugly and gray. I suggest using the system native L&F (except on Linux and Solaris then anything is an improvement)
  • Add a splash screen, can do this with the -splash argument in Java 6.

    • Supports alpha transparency so can be non-rectangular
    • Should provide a progress bar.

      • They used a sepia image fading into color to show progress which looked cool but didn't really show progress at all effectively.
  • Validating Data

    • Give feedback immediately.
    • JGoodies can provide a small icon in the corner of the component. You can do this yourself by painting the icon in the layered pane's popup layer.
  • Custom Components

    • You can improve GUIs by creating custom components.
    • This is where they messed up usability in some places. Make sure your custom components are significantly easier to use than the standard components otherwise it's better to go with what the user is used to. Also need to consider accessibility which they didn't mention at all.
  • Improve interactivity by updating search results immediately as the user changes values.
  • Use cyclic gradients for improved performance, even if you don't need the cyclic property (just paint one iteration).
  • Measure text with:

    • g2.getFotnMetrics() then stringWidth and getAscent
  • JList has a setLayoutOrientation method which lets you use it as a multicolumn list.
  • You can span text across all the cells in a row by clipping the text with a JViewPort to show just the section inside the cell currently being painted.
  • You can animate the changes made when sorting by painting the animation in the glass pane over where the table is.

5 Responses to “Extreme GUI Makeover”

  1. Andrew Herron Says:

    getFontMetrics().stringWidth() is so handy that we’ve already used it a few times in EL… getStringBounds() is another nice one :)


  2. javaguy44 Says:

    I’m not sure I understand your beef, b/c the session was clearly labeled “Extreme GUI Makeover”. Not “Extreme Usability”. Or “Usability for those searching for good ideas”. Perhaps before attending the session, you should have seen the previous years? Aerith and pimping out an outlook lookalike the year before were all Effects.

    Personally, I think it’s a good needed thing. You can google, grok JGoodies or go through JIDE’s demo for good ideas on usability…there are a lot of resourcss out there. But Romain, Chet, Chris are of a very small community of members who show you the fancy Flash like stuff you can do w/ Swing + Java2D.


  3. Adrian Sutton Says:

    I think you’re misunderstanding my complaint. There isn’t a great deal of difficulty in doing flashy effects and making stuff look cool, even with swing (it just takes time and dedication). What is difficult is knowing when to use them and doing so effectively. The session could quite easily have made the application both look fantastic with a whole heap of really flashy cool effects *and* be more usable. Quite a number of times they talked about why they were using the effects (to help the user see what changes more clearly, to draw attention to specific parts etc), so they clearly cared about usability, they just didn’t stop and think about the impact of all of the changes they made which was a shame.

    It’s good that swing developers are being inspired to create more flashy, good looking interfaces, it’s just a shame that with all the talk about improving the user experience, in many cases it’s actually ruining the user experience when it didn’t need to.


  4. javaguy44 Says:

    I’m not misunderstanding your complaint at all — I know exactly what you are whinging about.

    I think you’re a bit naive to think that Usability could have been easily added. Do you know how long it takes to prepare for JavaOne session? Usability is such a broad area, it would have inevitably lead to feature creep had they tried to bring it in two. on top of that, I don’t know any of the presenters personally, but they have day jobs plus two of them are trying to write a book.

    If you haven’t prepared a session or written a book simultaneously then I’d have to say you can’t speak from experience.

    >There isn’t a great deal of difficulty in doing flashy effects and making stuff look cool, even with swing (it >just takes time and dedication). What is difficult is knowing when to use them and doing so effectively.

    We can agree to disagree but in terms of delivery, the cost of doing flashy effects is far far greater than the cost of knowing when to use them(a bit of planning, common sense, and uat). The cost of actually implementing flashy effects would be allocated at weeks where as the cost of usability could be measured in man days.


  5. Adrian Sutton Says:

    >I think you’re a bit naive to think that Usability could have been easily added.
    and then:
    >The cost of actually implementing flashy effects would be allocated at weeks where as the cost of usability could be measured in man days.

    So is usability to hard to include in the session or too easy to be bothered with? Sticking to just the one argument might be beneficial.


Leave a Reply

Alternatively, subscribe to the Atom feed.