带线程的Java Swing-repaint和两个for循环给出错误,没有任何提示
我有一个小java程序,它有一个二维int数组:私有int[][]块网格; 我想在重绘函数(作为线程定期调用)中用两个for循环捕捉数组的值带线程的Java Swing-repaint和两个for循环给出错误,没有任何提示,java,multithreading,swing,for-loop,repaint,Java,Multithreading,Swing,For Loop,Repaint,我有一个小java程序,它有一个二维int数组:私有int[][]块网格; 我想在重绘函数(作为线程定期调用)中用两个for循环捕捉数组的值 有人能帮我吗?检查数组区块网格是否已初始化,是否在drawStar方法的范围内。 drawStar方法中存在空指针异常。 检查可能指向null的调用方的方法,并确保捕获它们(使用try/catch或在调用之前使用如果(x!=null),检查数组blockGrid是否已初始化且在drawStar方法的范围内。 drawStar方法中存在空指针异常。 检查可能
有人能帮我吗?检查数组
区块网格
是否已初始化,是否在drawStar方法的范围内。
drawStar
方法中存在空指针异常。
检查可能指向null的调用方的方法,并确保捕获它们(使用
try
/catch
或在调用之前使用如果(x!=null)
,检查数组blockGrid
是否已初始化且在drawStar方法的范围内。
drawStar
方法中存在空指针异常。
检查可能指向null的调用方的方法并确保捕获它们(使用
try
/catch
或在调用之前使用如果(x!=null)
)您确定这是完整的堆栈跟踪吗?我刚刚添加了一些错误消息行。行268是我上面提到的行:System.out.print(blockGrid[(ix)][(iy)]+“| |”);(它没有语法错误……因此我假设它与循环的线程处理有关?显然,我是新手)谢谢-我有点明白了-我确实理解is与数组的定义有关,数组不知何故不指向内存地址。但在前一行中,完全相同的代码正在工作(这意味着数组指向内存位置IMHO).我还定义了数组,每个元素上有0,有两个for循环:int[][]blockGrid=new int[21][19];for(int ix=0;ixIt现在可以工作了-我将定义公开为public static public static int[][]blockGrid=new int[21][19];TY谢谢你的帮助!!你确定这是完整的堆栈跟踪吗?我刚刚添加了更多的错误消息行。行268就是我上面提到的行:System.out.print(blockGrid[(ix)][(iy)]+“| |”);(它没有语法错误…所以我假设它与循环的线程处理有关?显然,我是新手)谢谢-我有点明白了-我确实理解is与数组的定义有关,数组不知何故不指向内存地址。但在前一行中,完全相同的代码正在工作(这意味着数组指向内存位置IMHO)。我还使用两个for循环定义了每个元素上都有0的数组:int[][]blockGrid=new int[21][19];for(int ix=0;ixIt现在可以工作了-我将定义公开为static public static int[][]blockGrid=new int[21][19];TY以获得您的帮助!!它现在可以工作了-我将定义公开为static public static int[]blockGrid=new int[21][19];谢谢你的帮助!!没问题,只要看看你的代码,确保将blockGrid设置为静态是合理的,而不是以某种方式传递它现在就可以了-我将定义公开为static public static int[][]blockGrid=new int[21][19];TY感谢您的帮助!!没问题,只需查看您的代码,确保将blockGrid设置为静态并以某种方式传递它是合理的
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
drawthings(g);
}
private void drawthings(Graphics g) {
for(int ix=0;ix<20;ix++)
{
for(int iy=0;iy<18;iy++)
{
System.out.print( blockGrid[(ix)][(iy)] + " ||");
}
}
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)
at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)
at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at iota_cafe3.Board.drawStar(Board.java:268)
at iota_cafe3.Board.paintComponent(Board.java:255)
at java.desktop/javax.swing.JComponent.paint(JComponent.java:1074)
at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5255)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618)
at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556)
at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)
at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5203)
at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5013)
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:865)
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)
at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)
at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at iota_cafe3.Board.drawStar(Board.java:268)
at iota_cafe3.Board.paintComponent(Board.java:255)
at java.desktop/javax.swing.JComponent.paint(JComponent.java:1074)
at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5255)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618)
at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556)
at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)
at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5203)
at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5013)
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:865)
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)
at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)
at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)