当我重新绘制()面板时,我将我的JLabels放在面板上,我得到了错误,但它仍然有效。我试着将panel.repaint();代码放在一个try语句中,但是没有帮助。还有没有人对JPanels的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) )发布于 2012-07-19 08:49:30
确保对UI的所有修改都在Event Dispatching Thread中执行,包括在容器中添加和移除组件。
正如里昂所说,使用invokeLater方法将确保在EDT上正确地进行操作。
发布于 2012-07-19 08:05:32
我不是很确定,但我想我以前遇到过同样的问题。我相信使用SwingUtilities.invokeLater当时对我很有帮助。试一试,我不是很确定。
https://stackoverflow.com/questions/11551903
复制相似问题