我正在为一个项目制作国际象棋程序.我正在尝试将移动历史框添加到主板的一侧.移动历史记录工作正常,数据被正确发送到文本区域,但是当AI考虑他的移动时,JTextArea中的文本消失了.
public void aiMove(){
if (!playing){ return; }
paintImmediately(0,0,totalX,totalY);
ai = eve.getMove(chess,wtm,aiOut); //text disappears here
chess.makeMove(ai);
wtm = !wtm;
humanMove = true;
writeMove(ai); //updates move history, text reappears here
playing = stillPlaying();
repaint();
}
private void writeMove(Move move){
char c = "abcdefgh".charAt(7-move.fromY);
char h ="abcdefgh".charAt(7-move.toY);
String s = Character.toString(c)+(move.fromX+1)+" - "+Character.toString(h)+(move.toX+1)+" ";
if (!wtm){
String q = chess.getFullMove()+". "+s+" ";
moves.setText(moves.getText()+q);
}
else {
moves.setText(moves.getText()+s+"\n");
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个正在发生的事情的打印屏幕. http://s13.postimage.org/mh7hltfk7/JText_Area_disappear.png
已解决 感谢所有回复.我改变了aiMove(),所以它创建了一个线程.这就是我做的.
尝试#3 ...挥杆对我来说仍然很陌生.我不想将writeMove改为getMove,否则我将不得不稍微改写一下.由于项目基本完成,我试图避免尽可能多的工作:) GUI完全是可选的,我只是为了好玩,并尝试学习一点摆动.
public void aiMove(){
if (!playing){ return; …Run Code Online (Sandbox Code Playgroud)