【问题标题】:Java/Chess Odd Gui BugJava/Chess 奇数 Gui 错误
【发布时间】:2017-03-27 04:40:31
【问题描述】:

所以我完全不知道为什么这不起作用 - 但 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);
    }
}

【问题讨论】:

    标签: java swing debugging animation chess


    【解决方案1】:

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

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

    【讨论】:

    • 啊。很有用。谢谢你。有没有什么快速优雅的方法可以用这些计时器之一暂停 gui 绘画?从外观上看不像。再次感谢 ^.^ 将标记为已解决。
    • @thePanthurr:计时器暂停或产生简单摇摆动画的最快最优雅的方式。它们并不难使用——只需查看教程并尝试一下。
    • 好吧,让我失望的是 gui 没有在周期性循环上运行以重新绘制它。它在移动后被重新粉刷——因此使用摇摆计时器似乎很尴尬。除非我完全误解了它们应该如何使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2015-06-02
    • 2021-12-12
    相关资源
    最近更新 更多