Bonjour,
Je suis en train de faire une nouvelle version d'un programme que j'avais fait avec Swing et je la fait en JavaFX cette fois-ci.
Seulement ce qui me paraissait évident avec Swing ne l'est plus avec JavaFX.
Sous Swing les dialogues sont des classes qui étendent JFrame donc il me suffit de déclarer une instance de ma classe dans le main pour avoir accès à ses méthodes et attributs.
Sous JavaFX je charge un fichier FXML qui est lié à un contrôleur, ce qui me plait mais je ne sais pas comment accéder aux méthodes du contrôleur (ni aux attributs mais pas besoin pour le moment).
Sauriez-vous m'éclairer ?
J'ai regardé à gauche et à droite sur Google, le document de JM Doudoux ou même ici et je n'ai pas trouvé ce que je cherche. Ça me parait pourtant basique.
Voici le code source de mon Main.
Je cherche à avoir accès à la méthode refreshGUI depuis le contrôleur mais je ne sais pas comment l'atteindre. J'ai vu des exemples de codes qui ne marchent pas chez moi notamment avec des getController() qui n'apparaissent jamais à la complétion de code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 package application; import java.util.Locale; import java.util.ResourceBundle; import java.util.Timer; import java.util.TimerTask; import controller.MainController; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.stage.Stage; //import javafx.stage.StageStyle; public class Main extends Application { @Override public void start(Stage primaryStage) { try { Locale myLocale = Locale.getDefault(); ResourceBundle rb = ResourceBundle.getBundle("locale.MainUI", myLocale); Parent root = FXMLLoader.load(getClass().getResource("/ui/MainUI.fxml"), rb); Scene scene = new Scene(root,640,480, Color.TRANSPARENT); //Scene scene = new Scene(root,640,480); scene.getStylesheets().add(getClass().getResource("/css/application.css").toExternalForm()); //primaryStage.initStyle(StageStyle.TRANSPARENT); primaryStage.setOpacity(0.98);; primaryStage.setScene(scene); primaryStage.show(); TimerTask timerTask = new TimerTask() { public void run() { System.out.println("Refreshed ! "); //root.lookup("#refreshGUI"); } }; Timer t = new Timer(); t.scheduleAtFixedRate(timerTask, 0, 1000); } catch(Exception e) { e.printStackTrace(); } } public void stop(Stage primaryStage){ System.out.println("Close has been fired !"); primaryStage.close(); } public static void main(String[] args) { launch(args); } }
Si vous avez besoin de plus d'infos merci de me le faire savoir.
Merci d'avance.
Partager