由于线程问题,这不起作用。你需要一个工作线程。
这应该有效:
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();
请注意,必须从 Event Dispatch Thread 调用 Swing 对象上的所有方法。为此,请使用以下模式:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// Do gui things
}
});
了解事件调度线程。SO中有很多关于此的帖子。只需搜索单词。