Swing links of the week: November 11, 2007

November 11th, 2007

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

  • John Zukowski provides an overview of using system tray in JDK 6.0. Judged by the comments, people do not know that you can use JPopupMenu on the system tray icon.
  • Alex Potochkin adds yet another useful tool to his SwingHelper project. This entry introduces a “visual debugger” painter that allows seeing what is repainted at runtime, and whether your application / custom components are repainting more than necessary.
  • Patrick Lightbody is having some problems with Swing applications (namely IntelliJ IDEA) under Leopard Spaces.
  • Daniel Spiewak has written an overview article on Fuse project that allows injecting external resources into custom Swing / Java2D painting code. Based on comments from Daniel and Romain, i am still not convinced that this approach is easier than writing a custom theme for an existing look-and-feel, at least for a big UI that needs consistency for all the visual elements.
  • Rafael Alvarez writes about yet another Swing layout manager. You can also read the manual that has more information on the syntax and the usage of the XMLGridLayout. The goal of this layout manager is “to provide all the power of GridBagLayout with the simplicity of an HTML table“.
  • Charles Tai has announced the new SwingRCP project. The goal of this project is to provide “a platform for developing applications based on the Eclipse Rich Client Platform (RCP).” This is a commercial product, and it remains to be seen whether it will be able to win the mindshares of either Swing or Eclipse RCP developers.
  • An interesting RFE has made its way into the latest binary build of Mustang Update N. RFE 6604856 provides a way to define a RepaintManager for the hierarchy of specified component. I have already discussed the good and the bad sides of RepaintManager as a tool for custom painting, and one of the biggest disadvantages is that RepaintManager is a global resource. It’s not immediately clear where this functionality will be used. My hope is that it was added for internal use in JavaFX (why wait until now? this limitation has been known for a very long time), and not for yet another JavaOne demo. A look at the sources reveals that the implementation is most probably in the new internal com.sun.java.swing.SwingUtilities3 class and its static setDelegateRepaintManager class. Hopefully, this will be formally exposed in Mustang Dolphin to allow using multiple repaint managers in a supported way.