Java/Gui错误

Java/Gui错误,java,swing,debugging,animation,chess,Java,Swing,Debugging,Animation,Chess,所以我完全不知道为什么这不起作用——但是GUI对getMove(GameState GameState)方法中的任何内容都没有响应 即使在我移动后有一个睡眠暂停,它也不会显示任何东西。任何帮助都会很好。我太迷路了 public class Engine extends Player { private GameState copy; public Engine(Color color, Direction direction) { super(colo

所以我完全不知道为什么这不起作用——但是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进入睡眠状态,使其无响应。解决方法是永远不要这样做,而是使用一个新的


附带问题:添加对
super.paintComponent(g)的调用方法,位于其第一行。这将允许您的JPanel进行内部喷漆。

Ah。非常有用。非常感谢。有没有什么快速而优雅的方法可以使用这些计时器暂停gui绘制?从表面上看,似乎不是这样。再次感谢^.^将标记为已解决。@画册:计时器是暂停或产生简单摆动动画的最快、最优雅的方式。它们并不难使用——只要检查一下教程并试一试就可以了。让我大吃一惊的是gui并没有在周期性循环中运行来重新绘制它。它是在移动后重新绘制的——因此使用摆动计时器似乎很尴尬。除非我完全误解了它们的用途。