SwingUtilities.invokeLater()

Tim*_*Tim 4 swing colors button

在我的方法doWork()我打电话

SwingUtilities.invokeLater(new Runnable(){
public void run() {
button.setBackgroundColor(Color.red);
}
});
Run Code Online (Sandbox Code Playgroud)

然后我打电话

SwingUtilities.invokeLater(new Runnable(){
public void run() {
button.setBackgroundColor(Color.blue);
}
});
Run Code Online (Sandbox Code Playgroud)

问题是按钮是红色然后是蓝色,还是蓝色然后是红色?

Mic*_*rdt 11

invokeLater()将其参数添加到Swing事件队列.所以他们将按照添加的顺序执行,即先红色然后蓝色.

  • @assylias:Coalescing是一种特殊机制,仅与鼠标移动事件,绘制事件和源组件明确支持它的事件相关.请参阅`java.awt.Component#coalesceEvents()` (3认同)