当我重新绘制()面板时,我正在放置我的JLabel,我得到错误,但它仍然有效。我试过把panel.repaint(); try语句中的代码并没有帮助。有没有其他人在JPanels上重绘()?
错误消息(从评论中复制):
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) )
答案 0 :(得分:2)
我不太确定,但我想我之前偶然发现了同样的问题。我相信使用SwingUtilities.invokeLater帮助我支持。 试一试,我不完全确定。
答案 1 :(得分:1)
确保对UI的所有修改都在Event Dispatching Thread中执行,这包括在容器中添加和删除组件。
正如莱昂所说,使用invokeLater
方法将确保正确地在EDT上进行操作。