2015-03-19 3 views
0

Я пишу программу мелочей/викторин, в которой пользователь отвечает на вопросы, и его/ее ответы оцениваются как правильные или неправильные в зависимости от выбранных ими координат экрана. Для чистого дизайна я хочу загрузить вопросы с помощью внешней функции, а затем присоединить MouseListener к объекту экрана.Как заставить 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); 
    } 
} 

Этот код отлично подходит для загрузки, позволяя играть и проверять ответ на один вопрос. Однако после того, как первый вопрос был загружен, я хочу иметь возможность повторить процесс - загрузить еще один (и, возможно, еще много) вопросов - добавив цикл в «главную» функцию. В настоящее время это невозможно, так как я не знаю, как заставить MouseListener прекратить прослушивание кликов пользователя и вернуться с awaitAnswer() на main().

Как отключить MouseListener для прослушивания пользователя? Как я могу выйти из раздела моего кода и вернуться к разделу автоматического выполнения?

ответ

0

Удалите метод ожидания.

Создайте конструктор (по умолчанию) для QuizScreen с оператором addMouseListener(this);.

С вашей мышиНажмите кнопку, просто выполните обратный вызов в основной программе, чтобы создать и уничтожить QuizScreen

Смежные вопросы