Java/Chess 奇怪的 Gui Bug

Java/Chess Odd Gui Bug

所以我完全不知道为什么这不起作用——但是 GUI 不响应 getMove(GameState gameState) 方法中的任何内容。

即使在我移动后通过睡眠暂停它——它也没有显示任何内容。任何帮助都会很棒。我迷路了。

    public class Engine extends Player {

    private GameState copy;

    public Engine(Color color, Direction direction) {
        super(color, direction);
    }

    public Move getMove(GameState gameState) {
        gameState.executeMove(new Move(4, 6, 4, 4));
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return new Move(5, 6, 5, 4);
    }
}

您在 Swing GUI 的事件线程上调用 sleep,这会阻塞事件线程,阻止它执行必要的活动,例如绘制 GUI 和与用户交互,并且这将使 GUI 进入睡眠状态,使其无响应。解决方案是永远不要这样做,而是使用 Swing Timer 代替。

附带问题:在覆盖方法的第一行添加对 super.paintComponent(g); 方法的调用。这将允许您的 JPanel 进行内务处理。