如何让 MouseListener 停止控制

How to get a MouseListener to stop being in control

我正在编写一个 trivia/quiz 程序,其中用户回答问题,his/her 答案根据他们点击的屏幕坐标判断为正确或错误。为了简洁的设计,我希望使用外部函数加载问题,然后将 MouseListener 附加到屏幕对象。

我的代码目前类似于下面给出的代码。

void main() {
    screen = new QuizScreen();
    //load data for question
    screen.awaitAnswer();
}

public class QuizScreen implements MouseListener{
    //...variables...
    //...blank methods for MousePressed, MouseReleased, etc...
    public void mouseClicked(MouseEvent me){
        //check if answer is right
    }

    public void awaitAnswer(){
        QuizScreen.addMouseListener(this);
    }
}

此代码可以很好地加载、允许播放和检查单个问题的答案。但是,在加载第一个问题后,我希望能够通过向 "main" 函数添加一个循环来重复该过程——加载另一个(可能还有更多)问题。目前这是不可能的,因为我不知道如何让 MouseListener 停止监听用户的点击和 return 从 awaitAnswer() 到 main()。

如何停止让 MouseListener 听取用户的声音?我如何退出代码的事件驱动部分并返回到自动执行部分?

移除 awaitAnswer 方法。

使用语句 addMouseListener(this);.

为 QuizScreen 创建一个(默认)构造函数

从您的 mouseClicked 函数中,只需执行对主程序的回调即可创建和销毁 QuizScreen