(Swing)JComponentが完全にペイントされるまで待つ方法が必要です。この実際の問題は、openmapアプリケーションから発生します。タスクは、いくつかのレイヤーでマップ(mapBean)を描画し、そのマップからイメージを作成することです。
残念ながら、それは明確に文書化されており、画像フォーマッタはマップから現在の状態を取得して画像を作成します。特にマップが複雑になると、JComponentであるmapBeanがペイントされる前にフォーマッタが呼び出されない可能性があります。
このオープンマップアプリケーションで説明されていますが、問題は非常に一般的で、おそらくSwingに関連しています。今のところ、私は一定の時間(1秒)待つだけですが、それは不完全なマップを作成するリスクを排除するものではありません...
編集
詳細-(OpenMap)MapPanelの構築から始めなければなりません。これは、internallzがMapBean(JComponentサブクラス)とMapHandlerを作成します。次に、MapHandlerに地理レイヤーをフィードすると、フレームワークはJComponentタイプのMapBeanに地理データのペイントを開始します。
マップにすべてのレイヤーを追加した後、別のフレームワーククラスを使用してJPG画像(または画像データを保持するbyte [])を作成します。そして、これは私が待たなければ問題を引き起こす可能性があります:この「イメージクリエーター」はマップBeanの現在の状態からイメージを作成し、この「イメージクリエーター」を早期に呼び出すと、一部のマップレイヤーがペイントされずに欠落します。かなり迷惑...