Swing links of the week: June 8, 2008

June 9th, 2008

Here are some Swing links that you might have missed during this week:

  • Synthetica look-and-feel has released version 2.7.0 and 2.7.1. No new skins have been added, but there are some new features and bug fixes.
  • Swing has aged remarkably well considering its long history and imposed rules of preserving backwards compatibility. However, there are some trends in modern UI design that need some special handling in the application code, and Ken Orr shows how to address a common problem with tree renderers – making them fill the entire width of the row.
  • Phoenix addresses a few other shortcomings of Swing components, showing how to provide continuation tooltips on trees and lists, wider and resizable popup windows in comboboxes and more.
  • Tim Boudreau announces the availability of a pure tree table implementation available as a standalone module in NetBeans. I have seen a few such implementations, and they usually involve using an entire tree as the rubberstamp renderer for the tree column, translating and clipping the tree to show only the relevant part for each row. This presents significant maintenance problems in passing the events and having look-and-feel consistent animation events. Looks like Tim and Standa Aubrecht have been able to solve these problems. Geertjan Wielenga has a tutorial on how to use this tree table to show information on the file system.
  • Collin Fagan continues working on the Swing tutorials and this week he has code samples for trees and borders.
  • Alex Potochkin has announced release 3.0 of his JXLayer project. This is one of my favorite third-party additions to Swing, and it’s great to see that it is continuously improving. There is a brand new forum on java.net where you can ask questions on JXLayer, and i have found Alex to be extremely quick to respond and cooperative to address feature requests. We have also updated the Rainbow project to use the latest release of the library.
  • David Qiao has posted slides and demo source code for his JavaOne BoF session on working around Swing bugs.
  • Anthoney Scotney has announced release 4.2 of WebRenderer Swing edition, a browser SDK based on Firefox 2. The decision to base the code on Firefox is interesting, especially in light of other vendors (such as TrollTech and Sun) deciding to use the competing WebKit library. Firefox 3 is about to be released (perhaps sometime this week), and it would be interestingto see how quicky WebRenderer will switch. The performance improvements in Firefox 3, especially for JavaScript-heavy sites, are quite impressive.
  • Joe Conti has created a static analysis tool to detect EDT violations at compilation time. The CheckThread project requires annotating your methods with the name of the intended runtime thread, and then checks to see whether there are any clashes between methods.
  • Detangler is another tool that aims to detect Swing threading problems. It attaches to your application running in debugging mode and shows thread-related bugs that cause visual artifacts, gray windows, deadlocks and slow listeners that cause frozen UIs.
  • Vaibhav Choudhary proposes a tool that will convert existing Swing applications to JavaFX. I’m not sure if the comparison with GWT as savior to writing AJAX applications is relevant, but from my experience automated conversion from one language to another never results in clean and readable code. There are just too many small differences between any two given languages, and you either decide not to support this (requiring large amount of manual work for any nontrivial app), or end up with an inordinate amount of generated code that doesn’t look anything like the best practices for the target language.
  • Finally, Josh Reed has been experimenting with Groovy’s GraphicsBuilder, and he is very impressed.