我正在用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