JTextArea オブジェクトを含む JScrollPane があります。この特定のアプリケーションでは、JTextArea が「プロセス コンソール」として機能しているため、誰かが長期実行プロセスで何が起こっているかを確認できます。私のコードは次のようになります。
JTextArea console;
...
// Initializes the console panel, including creation of the JTextArea and JScrollPane
private void initializePanel() {
JPanel consolePanel = new JPanel();
...
console = new JTextArea();
console.setEnabled(false);
textAreaScrollPane = new JScrollPane(console);
...
}
// Appends an incoming message to the console
@Override
public void update(Observable observable, Object consoleMessage) {
console.append(consoleMessage + "\n");
console.update(console.getGraphics());
}
私が直面している問題は、私の JScrollPane がスクロール バーで始まらないことです。基礎となる JTextArea にテキストが追加されると、JScrollPane の下部からはみ出します。残念ながら、長時間実行されるプロセスが完了するまで、スクロール バーは表示されません。その時点で、スクロール バーが突然表示され、ビューが JTextArea の最後にジャンプします。
そのため、さらにメッセージが JScrollPane の現在のビューポートの外にあるため、アプリケーションはフリーズしているように見えます。
メッセージが書き込まれるたびに JSrollPane を再描画するために、さまざまなコードの組み合わせを試しましたが、そのような運はありませんでした。JTextArea はメッセージを取得し、メッセージを受け取るとすぐに出力します。実際に問題となっているのは、JScrollPane がスクロール バーをすぐに追加しないことです。
ありがとう。