CNe*_*561 1 java events swing multithreading refresh
我已经将两台计算机编码为在黑白棋中互相播放,但是当它们互相播放时.该棋盘仅在游戏结束后更新.
从一些谷歌搜索我知道它有一些东西要做AWT事件线程,但我仍然不知道如何强制JFrame刷新.
我的功能是通过更改图标,然后调用revalidate和重绘来工作.任何指针都会很精彩.
如果你从a开始你的AI游戏actionPerformed(),它将在EDT线程中执行.你应该移动你的逻辑(和你sleep()的EDT线程之外的方法是启动一个新Thread的允许Swing正确地重新绘制UI并将更新发布到UI如下:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
myUI.update(); // repaint(), etc. according to changed states
}
});
Run Code Online (Sandbox Code Playgroud)
还要考虑使用javax.swing.SwingWorker,javax.swing.Timer并看一下Swing中的Concurrency.