Bonjour,
J'ai un projet dans mon école et je dois créer un Cube Escape.
J'utilise JavaFX et le scene Builder.
J'ai crée un magazine avec 9 pages.
Le problème, c'est que pour tourner les pages j'utilise toujours le même bouton (tournerPageDroite pour aller a droite et tournerPageGauche pour l'inverse).
Et quand je fais ça, je fais des toFront et des toBack des images afin de les afficher.
Mais c'est toujours le même code dans les if.

Je vous montre le code pour le bouton de droite:

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 @FXML
    private Button tournerPageDroite;
    @FXML
    private Button tournerPageGauche;
 
 
    //toutes les pages du magazine
    @FXML
    private ImageView page0;
    @FXML
    private ImageView Page1;
    @FXML
    private ImageView Page2;
    @FXML
    private ImageView Page3;
    @FXML
    private ImageView Page4;
    @FXML
    private ImageView Page5;
    @FXML
    private ImageView Page6;
    @FXML
    private ImageView Page7;
    @FXML
    private ImageView Page8;
    @FXML
    private ImageView page9;
 
 
    //images magazine
    @FXML
    private ImageView magazine;
    @FXML
    private ImageView pageDroiteMagazine;
    @FXML
    private ImageView pageGaucheMagazine;
 
    //autres variables
    private static int page = 0;
 
public void clicPDMag(MouseEvent e){
 
        if(e.getSource() == tournerPageDroite && page == 8) {
            magazine.toBack();
            Page7.toBack();
            Page8.toBack();
            pageGaucheMagazine.toFront();
            page9.toFront();
            tournerPageDroite.toFront();
            tournerPageGauche.toFront();
            page = 9;
        }
 
        //si on est sur la septieme et huitieme page
        if(e.getSource() == tournerPageDroite && page == 78) {
            magazine.toBack();
            Page7.toBack();
            Page8.toBack();
            pageGaucheMagazine.toFront();
            page9.toFront();
            tournerPageDroite.toFront();
            tournerPageGauche.toFront();
            page = 9;
        }
 
        //si on est sur la cinquieme et sixieme page
        if(e.getSource() == tournerPageDroite && page == 56) {
            Page5.toBack();
            Page6.toBack();
            Page7.toFront();
            Page8.toFront();
            tournerPageDroite.toFront();
            tournerPageGauche.toFront();
            page = 78;
        }
        //si on est sur la troisieme et quatrieme page
        if(e.getSource() == tournerPageDroite && page == 34) {
            Page3.toBack();
            Page4.toBack();
            Page5.toFront();
            Page6.toFront();
            tournerPageDroite.toFront();
            tournerPageGauche.toFront();
            page = 56;
        }
        //si on est sur la premiere et deuxieme page
        if(e.getSource() == tournerPageDroite && page == 12) {
            Page1.toBack();
            Page2.toBack();
            page9.toBack();
            Page3.toFront();
            Page4.toFront();
            tournerPageDroite.toFront();
            tournerPageGauche.toFront();
            page = 34;
        }
        if(e.getSource() == tournerPageDroite && page == 0) {
            pageDroiteMagazine.toBack();
            page0.toBack();
            magazine.toFront();
            Page1.toFront();
            Page2.toFront();
            tournerPageDroite.toFront();
            tournerPageGauche.toFront();
            page = 12;
        }
 
 
    }
Pour information, magazine est une image de fond qui représente un livre ouvert sur 2 pages.
pageDroiteMagazine représente seulement la partie droite du livre et pageGaucheMagazine inversement.
La fonction "clicPDMag" est due a un onMouseClicked sur le scene builder.
Je suis dans le controller et je l'ai bien relié au scene builder.
Ce magazine marche très bien comme ça mais j'aimerai vraiment l'optimiser car je trouve que c'est vraiment trop long (surtout qu'il y a aussi le bouton de gauche)

J'ai essayé de faire un tableau d'image:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ImageView[] tabPages= new ImageView[]{page0, Page1, Page2, Page3, Page4, Page5, Page6, Page7, Page8, page9};
Mais je n'arrive pas à l'utiliser quand je code.
J'ai tenté avec ce code et ce tableau:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
if(e.getSource() == tournerPageDroite && page!= 8) {
            tabPages[page].toBack();
            tabPages[page-1].toBack();
            magazine.toFront();
            page++;
            tabPages[page].toFront();
            page++;
            tabPages[page].toFront();
            tournerPageDroite.toFront();
            tournerPageGauche.toFront();
        }
Mais ca ne marche pas.

Merci d'avance si vous trouvez une autre solution ou juste l'erreur dans mon tableau ou mon code.
J'espère que se que j'ai expliqué n'était pas trop brouillon.