J'essaie d'obtenir un GUI JavaFX combiné avec une communication Socket en cours d'exécution.JavaMX Controller mehtod appel d'une autre classe
J'ai donc 4 classes.
SocketClient: gère l'entrée/sortie de données. Lorsque le client est connecté à un serveur, une étiquette sur l'interface graphique doit changer.
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: ce contrôleur doit définir le texte de l'étiquette lorsque le client est connecté.
public void setLabel(String status) {
label.setText(status);
}
GUI: chargement est l'interface utilisateur graphique (chargement 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();
principal: lance l'interface utilisateur graphique (GUI: lancement (GUI.class)
donc où et comment puis-je utiliser le contrôleur pour définir l'étiquette?
Alors, le contrôleur demande au modèle (SocketClient) de nouvelles données? – Waeuk
Si vous allez strictement le long du concept, oui. En théorie, le modèle devrait être complètement indépendant. Le contrôleur est le niveau qui gère ce qui est mis sur la vue. Comme je l'ai dit, vous trouverez toujours un moyen de «violer» cela et ce sera parfois plus facile, mais pour une chose aussi simple, je m'en tiendrai au concept. –
Le contrôleur peut-il s'exécuter en tant que thread, car il doit périodiquement demander s'il y a des données sur le socket. – Waeuk