こんにちは、おじさんです。
突然ですが前にswingでゲームを作っていた際に、
JPanelに画像を描画したかったんですがウィンドウをリサイズしないと画像が出てこなくて...
「おかしいな?」って思ってpaintcomponentが呼ばれてるか確認してみたら
呼ばれてなかったんです!...
ということで今回はjavaでpaintcomponentが呼ばれないときの対処法について説明していきます。
対処法
まずどうして呼ばれないのかというと
これをみてください。
paintComponentメソッドは、画面への描画が必要な際に、自動的に呼び出されます。
呼び出されるタイミングとしては、setVisibleが呼ばれたとき、ウィンドウサイズが変更されたときなどです。
teratailより
ということなので
JPanelを初期化した後にsetVisibleを呼び出さないとpaintComponentが呼ばれないわけです。
なので手順としては
- jframe初期化
- jpanel初期化
- コンテナ初期化
- setvisible
とやれば描画されるはずです!
まとめ
まとめです。
- paintComponentが呼ばれないときはJPanelを初期化してからSetVisibleする