JXTable packColumns JRE1.
To: comp.lang.java.gui
Hi,
I am using Java 1.6 and executed the JXTables packColumns only to find
that the UI is hanging. I use JGoodies so not sure if that is related
but how can I troubleshoot this? If I run in debug and get the
stacktrace this is what I find - UIDefaults hung after issuing a
'wait' command
Thread [AWT-EventQueue-0] (Suspended)
Object.wait(long) line: not available [native method]
UIDefaults(Object).wait() line: 485 [local variables unavailable]
UIDefaults.getFromHashtable(Object) line: 174
UIDefaults.get(Object) line: 144
MyTable(JTable).getDefaultRenderer(Class<?>) line: 1252
MyTable(JTable).getCellRenderer(int, int) line: 5620
BasicTableUI.paintCell(Graphics, Rectangle, int, int) line: 2066
BasicTableUI.paintCells(Graphics, int, int, int, int) line: 1969
BasicTableUI.paint(Graphics, JComponent) line: 1765
BasicTableUI(ComponentUI).update(Graphics, JComponent) line: 143
MyTable(JComponent).paintComponent(Graphics) line: 758
MyTable(JComponent).paint(Graphics) line: 1022
JViewport(JComponent).paintChildren(Graphics) line: 859
JViewport(JComponent).paint(Graphics) line: 1031
JViewport.paint(Graphics) line: 747
MyScrollPane(JComponent).paintChildren(Graphics) line: 859
MyScrollPane(JComponent).paint(Graphics) line: 1031
MyPanel(JComponent).paintChildren(Graphics) line: 859
MyPanel(JComponent).paint(Graphics) line: 1031
MySplitPane(JComponent).paintChildren(Graphics) line: 859
MySplitPane(JSplitPane).paintChildren(Graphics) line: 1026
MySplitPane(JComponent).paint(Graphics) line: 1031
MySplitPane(JComponent).paintChildren(Graphics) line: 859
MySplitPane(JSplitPane).paintChildren(Graphics) line: 1026
MySplitPane(JComponent).paint(Graphics) line: 1031
JPanel(JComponent).paintChildren(Graphics) line: 859
JPanel(JComponent).paint(Graphics) line: 1031
JLayeredPane(JComponent).paintChildren(Graphics) line: 859
JLayeredPane(JComponent).paint(Graphics) line: 1031
JLayeredPane.paint(Graphics) line: 564
JRootPane(JComponent).paintChildren(Graphics) line: 859
JRootPane(JComponent).paint(Graphics) line: 1031
JRootPane(JComponent).paintToOffscreen(Graphics, int, int, int, int,
int, int) line: 5104
BufferStrategyPaintManager.paint(JComponent, JComponent, Graphics,
int, int, int, int) line: 285
RepaintManager.paint(JComponent, JComponent, Graphics, int, int, int,
int) line: 1128
MyTable(JComponent)._paintImmediately(int, int, int, int) line: 5052
MyTable(JComponent).paintImmediately(int, int, int, int) line: 4862
RepaintManager.paintDirtyRegions(Map<Component,Rectangle>) line: 723
RepaintManager.paintDirtyRegions() line: 679
RepaintManager.seqPaintDirtyRegions() line: 659
SystemEventQueueUtilities$ComponentWorkRequest.run() line: 128
InvocationEvent.dispatch() line: 209
EventQueue.dispatchEvent(AWTEvent) line: 597
EventDispatchThread.pumpOneEventForFilters(int) line: 273
EventDispatchThread.pumpEventsForFilter(int, Conditional,
EventFilter) line: 183
EventDispatchThread.pumpEventsForHierarchy(int, Conditional,
Component) line: 173
EventDispatchThread.pumpEvents(int, Conditional) line: 168
EventDispatchThread.pumpEvents(Conditional) line: 160
EventDispatchThread.run() line: 121
In javax.swing.UIDefaults this is the code:
/* If the LazyValue for key is being constructed by another
* thread then wait and then return the new value, otherwise
drop
* the lock and construct the ActiveValue or the LazyValue.
* We use the special value PENDING to mark LazyValues that
* are being constructed.
*/
synchronized(this) {
value = super.get(key);
if (value == PENDING) {
do {
try {
this.wait(); <<<<<<<=====
Hung here
}
catch (InterruptedException e) {
}
value = super.get(key);
}
while(value == PENDING);
return value;
}
else if (value instanceof LazyValue) {
super.put(key, PENDING);
}
else if (!(value instanceof ActiveValue)) {
return value;
}
}
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24