-1

所以我遇到了这种晦涩难懂的错误,我不知道这意味着什么。在不查看我的代码的情况下,有人可以告诉我导致此错误的原因以及此错误的可能解决方案吗?任何帮助将不胜感激。

这是错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 15
    at java.awt.Container.getComponent(Unknown Source)
    at javax.swing.JComponent.rectangleIsObscured(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintToOffscreen(Unknown Source)
    at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
    at javax.swing.RepaintManager.paint(Unknown Source)
    at javax.swing.JComponent._paintImmediately(Unknown Source)
    at javax.swing.JComponent.paintImmediately(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.access$700(Unknown Source)
    at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
4

2 回答 2

2

在没有看到任何代码或任何说明问题的SSCCE的情况下,我们基本上只能猜测发生了什么。我敢打赌,您在弄乱另一个 Swing 组件Thread,这ArrayIndexOutOfBoundsException是在错误线程上删除组件的结果。

为了调试它,我将首先使用CheckThreadViolationRepaintManager并修复它指示的任何错误。如果这不起作用,我会尝试为 设置一个断点ArrayIndexOutOfBoundsException,查看哪个容器导致错误,并尝试在其上为任何添加和删除方法设置断点,以确定谁删除了导致异常的组件(可能在错误的线程上,您可以使用该方法轻松检查EventQueue.isDispatchThread()

于 2012-05-05T17:40:31.873 回答
1

如果您正在使用 swing 使用工作线程来控制组件工作线程教程

于 2012-05-05T17:33:12.553 回答