JavaFX - 等待用户在元素上单击鼠标

标签 java multithreading javafx mouseevent wait

我正在实现一个游戏,我想要求玩家单击特定 View 。

我希望我的控制线程等待,直到我得到一个值(我已单击 View 并处理结果)。目前,我正在通过创建一个线程,运行一个要求它们单击的方法,然后输入一个 while 循环,当鼠标单击事件更改 while 循环中使用的变量时终止该循环。

我正在编写一个游戏,其中有一个线程不断接收事件。对于特定事件,我想提示用户做出响应,但要做到这一点需要我位于 JavaFX 线程上(据我所知)。

在 JavaFX 中是否有更好的方法来做到这一点?谢谢!

最佳答案

JDK 线程文档中“隐藏”了几个工具,可以帮助您解决此类问题。通常,当我们让例程代码等待某些可以继续的条件时,我们使用线程同步器。

I want my control thread to wait until I get a value back [...]

CountDownLatch , CyclicBarrierFutureTask可能是可以解决您的问题的类(class)。这些的功能非常简单。它们具有停止线程并在满足某些条件时释放线程的功能。这些类中的每一个的区别只是应用于终止和释放线程的语义。阅读每个文档,看看哪一个最适合您。

您还可以查看其他学习来源。 (在我看来)世界上没有比布莱恩·戈茨(Brian Goetz)所著的《Java Concurrency In Practice》一书中的内容更好的学习资源了。我向您保证,如果您购买这本书,您将能够轻松地操纵线程(或者至少获得有关该主题的令人难以置信的知识)。明确表示您不需要购买这本书来解决您当前的问题。购买这本书只是我的建议,让你对线程有更多的了解。您可能会通过查看我提到的同步线程的类的文档来解决您的问题。

祝您的项目顺利。 ;)

关于JavaFX - 等待用户在元素上单击鼠标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612721/

相关文章:

javafx - IBM jdk 上的 Java FX 2?

java - Java从服务器发送文件到客户端

c - Mandelbrot 使用 Pthreads,单步遍历数组

java - HashSet<User>修改,而user只有最终值 'equals/hashcode'

javaFX:使用translatetransition移动具有绝对坐标的形状

Java 地理位置计算 - 没有得到正确的值

java - 输出从美元到人民币的货币表

java - 使用 spring 的 Rabbitmq 集群在故障转移后不会进行故障恢复

java - Spring Integration——聚合分散的消息

c++ - 根据用户输入创建多个线程的程序不起作用 (cin)?