JInternalFrame を拡張する GameUpdater という Java クラスがあります。クラスを単独でプログラムとして実行したときは JFrame を拡張していましたが、より大きなアプリケーションの一部にするために JInternalFrame に変更し、メニュー ボタンからアクセスできるようになりました。
このメニューボタンを押したときに呼び出される関数は次のとおりです。
private void update(){
GameUpdater gu = new GameUpdater();
desktop.add(gu); //add to JDesktopPane
gu.setSize(400, 300);
gu.setVisible(true);
gu.readMatches();//this function takes ages
gu.setMatch("Updating database...");//this is some output to the user, displays info in the internal frame
//try and insert into database
for(Match m : gu.getMatches()){
db.insertMatch(m);
}
gu.setMatch("DONE"); //now it shows the frame, way too late
}
メソッド gu.readMatches() は実行に時間がかかるため、定期的に JInternalFrame のコンテンツを更新して進行状況を表示します。ただし、この更新機能が完了するまでフレームは表示されません。
setVisible(true) が関数の最後まで待っているようなものです...
JFrame の場合は問題なく動作しました。これを引き起こす JInternalFrame の奇妙なプロパティはありますか?
乾杯