首页 > 解决方案 > JavaFX 客户端 UI 不会显示由主机触发的警报

问题描述

我目前有一个小型 Java 项目,我必须在其中为小型游戏设置点对点连接。游戏托管在一个客户端的服务器上,所以从现在开始我将这个客户端称为“主机”。两个 UI 控制器都在观察 GameState。客户端和主机连接成功。现在主机可以点击“开始游戏”按钮。发生这种情况时,客户端和主机都应该看到警报,但这不会发生在客户端。主机会看到警报,但客户端不会。

public void update(Observable o, Object arg) {
  if (o instanceof GameState) {
    this.alert("Event", "Event received"
    "An event was triggered by remote control.");
  }
}

如果客户端收到更新的 GameState 并且正确发生,我已经检查了多次。我已经尝试建立一个新场景但没有成功。

标签: javajavafxobservable

解决方案


我自己找到了解决方案。对于那些有兴趣的人来说,javafx.application.Platform是要走的路。就我而言:

public void update(Observable o, Object arg) {
  if (o instanceof GameState) {
    Platform.runLater( () -> this.alert("Event", "Event received"
    "An event was triggered by remote control."));
  }
}

推荐阅读