0
我正在嘗試爲我的課程項目製作遊戲。要求是我需要爲服務器和客戶端使用Spring架構。我已經完成了所有這些工作,甚至通過RestTemplate從服務器發佈或獲取內容。通過彈出服務器發佈的數據更新TableView
我的服務器完全在Spring Boot上。 我的客戶端在JavaFX和Spring Boot上運行。
我現在的問題是,有時候我想讓服務器發送數據到客戶端。該帖子正在工作,我收到的數據,但我似乎無法更新我的屏幕上的TableView。
我知道,因爲服務器在客戶端觸發了它,所以它不能在主要的JavaFX UI線程上。所以我試圖加載FXML
gameDetails = playerView;
FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("pre_game.fxml"));
try {
Parent root = loader.load();
} catch (IOException e) {
e.printStackTrace();
}
PreGame controller = loader.getController();
TableView<PlayerView> tblPlayerList = controller.tblPlayerList;
TableColumn<PlayerView, String> colPlayerName = controller.colPlayerName;
ObservableList<PlayerView> gamesObservableList = controller.gamesObservableList;
gamesObservableList.clear();
gamesObservableList = FXCollections.observableArrayList(gameDetails);
tblPlayerList.setItems(gamesObservableList);
但是屏幕上沒有任何反應。
在服務器端,我向任何客戶發佈「玩家」列表。它工作正常,我正在接收數據。所有這些都是一個問題,我無法理解如何更新TableView,因爲我無法訪問主UI線程。
如果你只是硬編碼而不是從服務器加載它,你能顯示數據嗎? –
我得到一個包含以下對象的列表: 'public PlayerView(String id,String name,String clientUri,String robotName,String secret){ this.id = id; this.name = name; this.clientUri = clientUri; this.robotName = robotName; this.secret = secret; }' –