Hello Janda
Stack trace is from thread called AWT-EventQueue... (status: 'RUNNING'). I
suppose that it is EventDispatchThread.
Right
But there can be more threads with same name.
Make sure that you don't use your Swing components outside EDT,
if you a Swing methods e.g. on the main thread you can see all kind of
bizarre exceptions
when Swing decides to repaint the components
Thanks
alexp
Due to infinite loop I wasn't able to get stack trace from NPE. So I used
'Exception breakpoins/Any Exception' from IntelliJ IDEA 8.1.4. (6u25)
I'm sorry that I didn't save stack trace for all threads.
Martin
Stack trace
AWT-EventQueue-0@2851, priority=6, in group 'main', status: 'RUNNING'
at javax.swing.JComponent.paintComponent(JComponent.java:755)
----- Original Message -----
From: "Alexander Potochkin"<[email protected]>
To: [email protected]
Sent: Tuesday, May 10, 2011 11:07:53 AM GMT +01:00 Amsterdam / Berlin / Bern /
Rome / Stockholm / Vienna
Subject: Re:<Swing Dev> NPE: JComponent.paintComponent in 6u25, 7b140
Hello
I guess there is a threading problem in the code,
Janda, could you override the paintComponent() method of the component
where the exception is thrown
and make sure that it is called on the Event Dispatching Thread?
System.out.println("SwingUtilities.isEventDispatchThread() =
"+SwingUtilities.isEventDispatchThread());
Thanks
alexp
Hi Janda,
I don't understand how did you get NPE with provided stacktrace?
JComponent#paintComponent cannot get g = null, because of in the
previous JComponent#paintChildren method we have the following code:
Graphics cg = sg.create(cr.x, cr.y, cr.width,
cr.height);
cg.setColor(comp.getForeground()); // here
will be NPE when cg is null
I'm also not sure that it's valid situation to pass in the
JComponent#paintComponent method null as a Graphics. Could you please
provide a small test?
Regards, Pavel
protected void paintComponent(Graphics g) {
if (ui != null) {
Graphics scratchGraphics = (g == null) ? null : g.create();
try {
ui.update(scratchGraphics, this);
}
finally {
scratchGraphics.dispose(); // here
is NPE when input 'g' is null
}
}
}
uname -a
Linux linux-tp9a 2.6.25.20-0.4-default #1 SMP 2009-06-01 09:57:12
+0200 x86_64 x86_64 x86_64 GNU/Linux
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) Server VM (build 20.0-b11, mixed mode)
Stack trace
AWT-EventQueue-0@2851, priority=6, in group 'main', status: 'RUNNING'
at javax.swing.JComponent.paintComponent(JComponent.java:755)
at javax.swing.JComponent.paint(JComponent.java:1,029)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1,038)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1,038)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1,038)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5,124)
at
javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1,224)
at javax.swing.JComponent._paintImmediately(JComponent.java:5,072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4,882)
at
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
at
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at
javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at
javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at
java.security.AccessController.doPrivileged(AccessController.java:-1)
at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
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)