小编twe*_*mon的帖子

JTextArea文本消失

我正在为一个项目制作国际象棋程序.我正在尝试将移动历史框添加到主板的一侧.移动历史记录工作正常,数据被正确发送到文本区域,但是当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)

java swing jtextarea

2
推荐指数
1
解决办法
549
查看次数

标签 统计

java ×1

jtextarea ×1

swing ×1