Java 在“绘制”方法中绘制形状
我的程序是一种用多线程在Java 在“绘制”方法中绘制形状,java,swing,java-2d,Java,Swing,Java 2d,我的程序是一种用多线程在JPanel上画圆的方法。以下是我代码的一部分。我可以在paint方法中绘制图像,但在paint方法中无法绘制形状。怎么了 public void paint(Graphics g) { if (draw == true) { super.paint(g); Graphics2D g2d = (Graphics2D)g; for (Star s : this.items) {
JPanel
上画圆的方法。以下是我代码的一部分。我可以在paint方法中绘制图像
,但在paint方法中无法绘制形状
。怎么了
public void paint(Graphics g) {
if (draw == true) {
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
for (Star s : this.items) {
g2d.draw(s.cirle);
}
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
}
// a constructor of my star class
public Star(int delay,int initialX,int initialY){
//ImageIcon ii = new ImageIcon(this.getClass().getResource("star.jpg"));
//starImage = ii.getImage();
Shape circle = new Ellipse2D.Float(initialX,initialY,100f,100f);
System.out.println(circle);
x=initialX;
y=initialY;
randomDesXY();
this.delay=delay;
}
错误消息:
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常
位于java.awt.geom.Path2D$Float.(Path2D.java:232)
位于java.awt.geom.Path2D$Float。(Path2D.java:207)
位于sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
位于sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
位于sun.java2d.pipe.validatePie.draw(validatePie.java:154)
位于sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
位于javax.swing.JComponent.paintooffscreen(JComponent.java:5221)
位于javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
位于javax.swing.RepaintManager.paint(RepaintManager.java:1206)
javax.swing.JComponent.\u(JComponent.java:5169)
位于javax.swing.JComponent.paintInstance(JComponent.java:4980)
位于javax.swing.repainmanager.paintDirtyRegions(repainmanager.java:770)
位于javax.swing.repainmanager.paintDirtyRegions(repainmanager.java:728)
位于javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
在javax.swing.repaitmanager.access$700(repaitmanager.java:59)
在javax.swing.repaitmanager$ProcessingRunnable.run(repaitmanager.java:1621)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
在java.awt.EventQueue.access$000(EventQueue.java:101)
在java.awt.EventQueue$3.run(EventQueue.java:666)
在java.awt.EventQueue$3.run(EventQueue.java:664)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:128)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:117)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常
位于java.awt.geom.Path2D$Float.(Path2D.java:232)
位于java.awt.geom.Path2D$Float。(Path2D.java:207)
位于sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
位于sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
位于sun.java2d.pipe.validatePie.draw(validatePie.java:154)
位于sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
位于javax.swing.JComponent.paintooffscreen(JComponent.java:5221)
位于javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
位于javax.swing.RepaintManager.paint(RepaintManager.java:1206)
javax.swing.JComponent.\u(JComponent.java:5169)
位于javax.swing.JComponent.paintInstance(JComponent.java:4980)
位于javax.swing.repainmanager.paintDirtyRegions(repainmanager.java:770)
位于javax.swing.repainmanager.paintDirtyRegions(repainmanager.java:728)
位于javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
在javax.swing.repaitmanager.access$700(repaitmanager.java:59)
在javax.swing.repaitmanager$ProcessingRunnable.run(repaitmanager.java:1621)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
在java.awt.EventQueue.access$000(EventQueue.java:101)
在java.awt.EventQueue$3.run(EventQueue.java:666)
在java.awt.EventQueue$3.run(EventQueue.java:664)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:128)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:117)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常
位于java.awt.geom.Path2D$Float.(Path2D.java:232)
位于java.awt.geom.Path2D$Float。(Path2D.java:207)
位于sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
位于sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
位于sun.java2d.pipe.validatePie.draw(validatePie.java:154)
位于sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
位于javax.swing.JComponent.paintooffscreen(JComponent.java:5221)
位于javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
在javax.swing.RepaintManager.paint(repaitmanager.java:1206)
javax.swing.JComponent.\u(JComponent.java:5169)
位于javax.swing.JComponent.paintInstance(JComponent.java:4980)
位于javax.swing.repainmanager.paintDirtyRegions(repainmanager.java:770)
位于javax.swing.repainmanager.paintDirtyRegions(repainmanager.java:728)
位于javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
在javax.swing.repainmanager。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Path2D$Float.<init>(Path2D.java:232)
at java.awt.geom.Path2D$Float.<init>(Path2D.java:207)
at sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
at sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
at sun.java2d.pipe.ValidatePipe.draw(ValidatePipe.java:154)
at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Path2D$Float.<init>(Path2D.java:232)
at java.awt.geom.Path2D$Float.<init>(Path2D.java:207)
at sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
at sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
at sun.java2d.pipe.ValidatePipe.draw(ValidatePipe.java:154)
at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Path2D$Float.<init>(Path2D.java:232)
at java.awt.geom.Path2D$Float.<init>(Path2D.java:207)
at sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
at sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
at sun.java2d.pipe.ValidatePipe.draw(ValidatePipe.java:154)
at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Path2D$Float.<init>(Path2D.java:232)
at java.awt.geom.Path2D$Float.<init>(Path2D.java:207)
at sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
at sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
at sun.java2d.pipe.ValidatePipe.draw(ValidatePipe.java:154)
at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Path2D$Float.<init>(Path2D.java:232)
at java.awt.geom.Path2D$Float.<init>(Path2D.java:207)
at sun.java2d.pipe.BufferedRenderPipe.draw(BufferedRenderPipe.java:525)
at sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
at sun.java2d.pipe.ValidatePipe.draw(ValidatePipe.java:154)
at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2383)
at tma1.Board.paint(Board.java:61)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent._paintImmediately(JComponent.java:5169)
at javax.swing.JComponent.paintImmediately(JComponent.java:4980)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.
................
public Star(int delay,int initialX,int initialY){
Shape circle = new Ellipse2D.Float(initialX,initialY,100f,100f);