I am in the process of migrating our Java 1.4 based Swing application to Java 6. I thought to give Nimbus a go and stumbled over a ClassCastException I'd like to share with you.
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.borland.dbswing.TableFastStringRenderer cannot be cast to javax.swing.JComponent
at com.sun.java.swing.plaf.nimbus.AbstractRegionPainter.paint(AbstractRegionPainter.java:25)
at com.sun.java.swing.plaf.nimbus.NimbusDefaults$PainterBorder.paintBorder(NimbusDefaults.java:1721)
at javax.swing.plaf.BorderUIResource.paintBorder(BorderUIResource.java:96)
at com.borland.dbswing.TableFastStringRenderer.paint(TableFastStringRenderer.java:379)
at javax.swing.CellRendererPane.paintComponent(CellRendererPane.java:134)
at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:631)
at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:519)
at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:308)
at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:234)
at javax.swing.JComponent.paintComponent(JComponent.java:751)
at javax.swing.JComponent.paint(JComponent.java:1017)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5112)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:294)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5060)
at javax.swing.JComponent.paintImmediately(JComponent.java:4870)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
It occurs under Java(TM) SE Runtime Environment (build 1.6.0_17-b04), Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode) on RHLinux 5
Note that there's the com.borland.dbswing.TableFastStringRenderer involved which is a java.awt.Component not a JComponent. Of course if I could I'd move away from
the Borland bits, but then again this issue does not occur with our regular jgoodies plastic3D look and feel.
Is the nimbus look and feel maintained for Java 6 or only for 7? (I haven't tried 7, and the using DocJar I found the class' source empty for 7)
Where would I find the source for the of this class as it is in my JRE build, to verifiy that casting to JComponent is necessary and put the blame on Borland?