0

当我 repaint() 放置 JLabels 的面板时,出现错误,但它仍然有效。我试着把 panel.repaint(); try 语句中的代码,但没有帮助。还有其他人对 JPanel 的 repaint() 有问题吗?

错误消息(从评论中复制):

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 21 
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.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source) 
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source) )
4

2 回答 2

2

我不太确定,但我想我之前偶然发现了同样的问题。我相信使用 SwingUtilities.invokeLater 帮助了我当时的支持。试试看,我不是很确定。

于 2012-07-19T00:05:31.683 回答
1

确保对 UI 的所有修改都在事件调度线程中执行,这包括从容器中添加和删除组件。

正如 Leon 所说,使用该invokeLater方法将确保在 EDT 上正确执行操作。

于 2012-07-19T00:49:30.480 回答