JavaFX 客户端 UI 不会显示主机触发的警报

标签 java javafx observable

我目前有一个小型 Java 项目,我必须为一个小游戏建立点对点连接。 该游戏托管在一个客户端的服务器上,因此从现在起我将该客户端称为“主机”。 两个 UI Controller 都在观察 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 并且情况正确。 我已经尝试设置一个新场景但没有成功。

最佳答案

我自己找到了解决方案。 对于那些感兴趣的人来说,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."));
  }
}

关于JavaFX 客户端 UI 不会显示主机触发的警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55995140/

相关文章:

javascript - Angular-redux 设计 - 数组选择器

Angular 7 行为主体与类对象

java - OpenGL使用错误?

java - 如何在JavaFX中使TextFlow在窗口中央左对齐

java - 如何禁用节点而不在 JavaFX 中将其灰显?

java - 如何以编程方式在页面上发出鼠标单击

events - 是否可以对 F# 事件使用成员而不是 let?

java - 文件在 Linux 上被删除但在 Windows 上没有

java - 添加 keyListener 来模拟鼠标单击链接,页面是使用 Javax jspx servlet 制作的。 getElementById 返回 null

java - 何时使用 Bean Validation 与自定义验证框架?