EVALUATION
Yes, this was supposed to be fixed by 6364555. Unfortunately, a last-minute optimization tweak caused this problem.
In the JTableHeader class (and others), I had originally planned to add code like the following to updateUI(), to propogate the change to the renderer:
+ TableCellRenderer renderer = getDefaultRenderer();
+ if (renderer instanceof JComponent) {
+ ((JComponent)renderer).updateUI();
+ }
Instead, I added:
+ TableCellRenderer renderer = getDefaultRenderer();
+ if (!(renderer instanceof UIResource) && renderer instanceof Component) {
+ SwingUtilities.updateComponentTreeUI((Component)renderer);
+ }
My goal was to avoid updating the UI of any renderer that is a UIResource, thinking that it would be re-installed by the UI of the JTableHeader anyway. Unfortunately, the default renderer for JTableHeader is installed by the JTableHeader itself, AND it is a UIResource. As such, it's not safe to optimize this way.
I'll remove the check for UIResource in all places that I fixed for 6364555.
|