我正在用java写一个国际象棋程序。到目前为止,事情进展良好,但我更新我的用户界面时遇到问题。在java中的后台运行线程
这里的代码延伸JPanel类器ChessBoard片段。
if (isLegalMove(aMove)) { // If the move's legal
makeMove(aMove); // Make that move
select = null; // Reset some info
drag = null;
toggleTurn(); // Change turns
generateMoves(0); // Get legal moves for CPU
repaint(); // Redraw board
thread.run(); // Run chess algorithm
}
线程呼吁我的棋盘实例“运行”:这是当用户试图使一招叫。发现移动的算法可能需要几秒钟才能决定移动。
我想为我的UI更新以反映用户的举动,然后运行该算法。这就是为什么我在一个单独的线程上运行算法。但是我的用户界面并没有被更新,直到电脑也开始移动。
因此,如果用户点击一个空间,以发送一条那里,屏幕冻结,然后突然一块已经被移动,但计算机移动也并再次是玩家的回合。
任何帮助将不胜感激。
读你肯定然后将任何
Thread
更新UI需要很长时间才能运行的代码在线程中?或者它在'generateMoves(0)'中?只需几秒钟就可以找到一个调试器。 – Strelok