Scala swing在按下按钮后等待按下按钮



所以我想做的是按下一个按钮,在ButtonClicked事件中,我想等待完成事件,直到我按下特定的按钮/指定的按钮之一。
我也知道这个话题有一些类似的问题,但我没能找到一个修复的答案

基本上就是:

reactions += {
case event.ButtonClicked(`rollDice`) =>
some code ...
wait for one of the specified buttons to be pressed and then continue
some code ...
在不使用线程的情况下,是否有一个简单的方法来解决这个问题?

当然可以在事件层周围设置一些抽象,但您要求"简单",所以我的建议是在掷骰子时设置一个标志/状态,然后在其他按钮的事件处理程序中检查该标志。

private var postDiceRollState: Option[InfoRelatedToRollDice] = None
reactions += {
case event.ButtonClicked(`rollDice`) =>
// capture whatever info you need to pass along to the later button handler
val relevantInfo = /* some code... */
// store that info in the "state"
postDiceRollState = Some(relevantInfo)
case event.ButtonClicked(other) if isPostDiceRollButton(other) =>
// when the other button gets clicked, pull the relevant info from your "state"
postDiceRollState match {
case Some(relevantInfo) =>
postDiceRollState = None // clear state
doInterestingStuff(relevantInfo) // "some code..."
case None =>
// nothing happens if you didn't roll the dice first
}
}

注意:我代表的是"标志"。作为一个选项,假设您可能有一些想要捕获的关于rollDice事件的信息。如果你实际上没有任何东西要放进去,你可以将你的状态表示为private var didRollDice: Boolean = false, set/clear将分别将其设置为true/false。

相关内容

  • 没有找到相关文章

最新更新