JFrame 内に構築された UI があります。ボタンの 1 つが (同じ Java プロセス内で) 長時間実行される呼び出しを開始し、その実行中に UI がフリーズします。
物事がまだ実行中であることを明確にするために、おそらくポップアップでプログレスバーを表示して、プログラムが何をしているかについてユーザーが最新の状態に保つことができると考えました。
そこで、新しい JDialog を作成し、それに JProgressBar を追加して、状況に応じて更新しています。問題は、そのダイアログの内容が更新されていないことです。タイトルに加えた変更はすぐに表示され、コンソールに出力したものはすべて表示されますが、UI 自体には何も表示されません。
再描画を強制するために発行できるコマンドはありますか?
このセクションの核心は次のとおりです。
killWindow = new JDialog();
killWindow.setUndecorated(true);
killWindow.setTitle("stopping tests - 0 of " + numActive);
killProgress = new JProgressBar(0, numActive);
killWindow.add(killProgress);
killProgress.setStringPainted(true);
killWindow.pack();
killWindow.setLocationRelativeTo(frame);
killWindow.setVisible(true);
次に、進行するにつれて...:
killProgress.setValue(++killedTests); // not seen!
killProgress.setString("Killing test on " + nickname()); // not seen!
log("Killed another test, " + killedTests + " so far"); // visible in real time
killWindow.setTitle("stopping tests - " + killedTests +
" of " + killProgress.getMaximum()); // visible in real time
私は何が欠けていますか?ここSOでグーグルと検索を試みましたが、明らかなものは何も見られませんでしたか?