0

JLabels を配置しているパネルを repaint() すると、エラーが発生しますが、それでも機能します。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) )
4

2 に答える 2

2

よくわかりませんが、以前に同じ問題に遭遇したと思います。SwingUtilities.invokeLaterを使用することで、当時の私は助けになったと思いました。試してみてください。正確にはわかりません。

于 2012-07-19T00:05:31.683 に答える
1

UI に対するすべての変更がイベント ディスパッチ スレッドで実行されていることを確認してください。これには、コンテナーからのコンポーネントの追加と削除が含まれます。

Leon が述べているように、このinvokeLater方法を使用すると、EDT で操作が正しく実行されることが保証されます。

于 2012-07-19T00:49:30.480 に答える