2014-12-06 3 views
-1

У меня есть цикл, как это:Приостановка цикла до пользователя нажмите кнопку

do{ 
    /* method is randomly choosing next question from database */ 
    /* Question keep possibly answers aswell */ 
    Question question = questionBase.getNextQuestion(); 

    /* creating new panel with label with question and buttons with answers */ 
    QuestionPanel qPanel = new QuestionPanel(question); 

    /* show panel to user */ 
    myJFrame.setContentPane(qPanel); 
    myJFrame.validate(); 

    /* wait till user will answer - so when button from panel qPanel is clicked */ 
    /* how?? */ 

}while(!isEnd()); 

Что я попробовал простой while(qPanel.isAnswered() == false()) цикл, когда я был checkign флаг answered который был установлен на верно, когда кнопка была нажата. Но Gui не освежает вообще cuz во время цикла

Я попытался поставить Swing Worker, но мой основной цикл DoWhile не ждет его исполнения, что разумно.

Я пробовал Swing Timer, однако моя основная петля не останавливается вообще.

Возможно, я использую его неправильно. Однако, что лучший способ решить мою проблему?

+0

вам нужно использовать threads.or вы можете задать следующий вопрос после ответа пользователя на вопрос, тогда вам не понадобится нить –

ответ

1

..что лучший способ решить мою проблему?

  • Обеспечить кнопку для пользователя блокировки в ответ или проверки ответа
  • Добавить прослушиватель действий по кнопке.
  • Когда обнаружено событие действия, продолжайте.

(И игнорировать совет, который вам нужна нить У вас уже есть один -.. На событие диспетчерской темы, и не нуждаются в другом)

+1

правильно. полностью пропустил часть, которая была gui, и у нее могут быть ActionListeners. Хорошее напоминание спасибо. удалит комментарий мгновенно – Codeek

+0

может показать мне, как «Когда обнаружено событие действия», часть выглядит как-то учебник или что-то подобное? – ilovkatie

+0

* «Можете ли вы показать мне .. какой-то учебник ..» * Совет: поместите «X java tutorial» в свою любимую поисковую систему, где «X» может совпадать с тем, что вы исследуете, например. «событие действия». Следуйте по верхней ссылке. –

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