スレッド化の問題のため、これは機能しません。Worker Threadが必要です。
これはうまくいくはずです:
SwingWorker<Object, Object> sw = new SwingWorker<Object, Object>() {
@Override
protected Object doInBackground() throws Exception {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jTextArea.setBackground(Color.RED);
}
});
Thread.sleep(1000);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jTextArea.setBackground(Color.WHITE);
}
});
return null;
}
};
sw.execute();
Swing オブジェクトのすべてのメソッドは、イベント ディスパッチ スレッドから呼び出す必要があることに注意してください。これを行うには、次のパターンを使用します。
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// Do gui things
}
});
イベント ディスパッチャ スレッドについて学習します。SOにはこれに関する非常に多くの投稿があります。単語を検索するだけです。