Bonjour à tous,
J'ai un programme java dont l'affichage est assuré par un ensemble de classe JavaFX. Pour faire communiquer le tout, le programme java a accès à une interface Java (Affichable.java) qui est implémentée par une classe javafx. (DisplayManager.fx)
L'affichage est découpé en 4 parties (4 * 1/4 de l'écran) et à chaque quart de l'écran est associé un CustomNode dans la Scene.
La classe DisplayManager contient donc le code du Stage + le code des méthodes dessinant des chose dans le stage.
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 Stage { fullScreen: true title: bind stringTitle scene: Scene { .... content: [ Group { content: bind [ Group{ content: [ ..., module1 ] }, Group{ translateX:desktop.getModuleX(2),translateY:desktop.getModuleY(2) content: [ ...., module2 ] }, Group{ translateX:desktop.getModuleX(3),translateY:desktop.getModuleY(3) content: [ ..., module3 ] }, Group{ translateX:desktop.getModuleX(4),translateY:desktop.getModuleY(4) content: [ ..., module4 ] }, ..... }Le code ci-dessus fonctionne mais ne permet d'afficher que dans le module 1.
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 var currentPos: Integer; var module1: CustomNode; var module2: CustomNode; var module3: CustomNode; var module4: CustomNode; //AffichageA et AffichageB extends CustomNode public override function displayA(String): Void { module1 = AffichageA { texte: String } } public override function displayB(String): Void { module1 = AffichageB { texte: String } }
Je souhaiterai maintenant afficher dans le module dont le numéro correspond à la variable currentPos du code ci dessus (ex : si currPos == 2, on affiche dans le module 2)
Une solution simple mais très inélégante (et qui marche) serait
La deuxième approche a été de créer une méthode intermédiaire (mais ce code ne compile pas alors que "l'équivalent java" serait correct .....)
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 public override function displayA(String): Void { if (currentPos==1){ module1 = AffichageA { texte: String } }else if (currentPos==2){ module2 = AffichageA { texte: String } }else if (currentPos==3){ module3 = AffichageA { texte: String } }else if (currentPos==4){ module4 = AffichageA { texte: String } } //Et ça pour chaque méthode !!!! Code dupliqué horrible ....
Je cherche donc une solution pour éviter d'avoir à faire ce que j'ai proposé dans la méthode A qui m'obligerait à dupliquer des dizaines de lignes de codes ...
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 function selectedModule(): CustomNode{ if (currentPos==1) return module1; if (currentPos==2) return module2; if (currentPos==3) return module3; if (currentPos==4) return module4; return null } public override function displayA(String): Void { this.selectModule() = AffichageA{ texte: String } } //Nettement mieux mais ne compile pas .....
Merci d'avance
Partager