首页 > 解决方案 > 如何停止程序等待用户操作?

问题描述

我有一种方法可以在点击时移动

public void processMove(int fromX, int fromY, int toX, int toY) {
    ...
    if (moveCorrect()) {
        makeMove(fromX, fromY, toX, toY);
    }
    ...
}

该方法从鼠标点击的处理程序中调用,添加到特定的 JPanel。这个逻辑工作正常,直到我发现当他们到达最后一行时可以转换棋子。所以我应该显示覆盖,其中用户将选择将要转换的棋子。所以我叫 PawnTransformOverlay。

if (//if pawn reaches last line) {
    PawnTransfromOverlay.showOverlay();
}

我实际上想停止程序,直到用户单击,从覆盖中获取单击的部分并转换 pawn 而不离开此if语句。我现在唯一能想到的选择是为 PawnTransformOverlay 制作处理程序并调用一些函数,比如transformPawn()在点击时从这个处理程序中调用。但后来我将不得不复制这些fromX, fromY, toX, toY以使用它们 transformPawn()。这似乎是我不知道的更好的方式。

有可能吗,还是有其他方法可以做得更好?每个想法和提示都会非常有帮助!!!

为了更好地理解我要问的问题: https ://github.com/Yonshoku/Chess2

并链接到我无法找到正确方法的课程: https ://github.com/Yonshoku/Chess2/blob/master/src/chessgui/Game.java

标签: javadesign-patterns

解决方案


推荐阅读