0
我正在嘗試使JavaFX GUi與運行的Socket通信結合使用。JavaFX Controller mehtod來自其他類的調用
所以我得到了4個類。
SocketClient:正在處理數據輸入/輸出。當客戶端連接到服務器時,GUI上的標籤應該改變。
private void openSocket() {
try {
client = new Socket();
client.setReuseAddress(true);
client.connect(new InetSocketAddress(SERVER_IP,SOCKET_PORT),10);
//Where do I get the Controller From?
//guiController = loader.getController();
//guiController.setLabel("Connected");
}catch (Exception e) {
}
}
GUIController:此控制器應該在客戶端連接時設置標籤的文本。
public void setLabel(String status) {
label.setText(status);
}
GUI:正在加載GUI(裝載GUI.FXML ....)
FXMLLoader loader = new FXMLLoader (getClass().getResource("GUI.fxml"));
VBox root = (VBox)loader.load();
guiController = loader.getController();
\\This is Working
guiController.setLabel("test");
Scene scene = new Scene(root,root.getPrefWidth(),root.getPrefHeight());
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
mainStage.setScene(scene);
mainStage.setResizable(false);
mainStage.show();
主營:推出的GUI(圖形用戶界面:推出(GUI.class)
所以在哪裏以及如何使用控制器來設置標籤
那麼控制器詢問模型(SocketClient)是否有新的數據? – Waeuk
如果你嚴格遵循這個概念,是的。理論上,模型應該是完全獨立的。控制器是管理視圖的等級。正如我所說的,你總會找到一種「違反」的方式,有時會更容易,但對於這樣一個簡單的事情,我會堅持這個概念。 –
控制器是否可以作爲線程運行,因爲它需要定期詢問套接字上是否存在某些數據。 – Waeuk