Bonjour,
Je rencontre un problème avec la création d'une galerie photo en java.

Le but est de créer une galerie photo, avec des boutons suivant et précédent pour naviguer.

Je vous colle mon code car je trouve très bizarre. la première fois que je clic sur le bouton suivant tout se passe bien mais la seconde fois ça ne marche pas (double itération je ne sais pas pourquoi)

J'ai seulement deux classes:

-----------------------------------------------------------------------
GaleriePhoto.java
-----------------------------------------------------------------------
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
package galeriePhoto.client;
 
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Label;
 
 
 
 
public class GaleriePhoto implements EntryPoint {
 
    private DockPanel dPanel = new DockPanel();
    private Label Titre = new Label();
    private Galerie Galerie = new Galerie();
    private static final String MAX_SIZE = "100%";
 
    Image img1 = new Image("img/1.png");
    Image img2 = new Image("img/2.png");
    Image img3 = new Image("img/3.png");
    Image img4 = new Image("img/4.png");
    Image img5 = new Image("img/5.png");
    Image img6 = new Image("img/6.png");
    Image img7 = new Image("img/7.png");
    Image img8 = new Image("img/8.png");
 
    public void onModuleLoad() {
 
        //Propriété du dockpanel
        dPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
        dPanel.setBorderWidth(5);
        dPanel.setWidth(MAX_SIZE);
        Titre.setText("Gallerie Photos");
 
        //agencement dans le dockpanel
        dPanel.add(Titre, DockPanel.NORTH);
        dPanel.add(img1, DockPanel.NORTH);
        dPanel.add(Galerie, DockPanel.SOUTH);
 
 
        RootPanel.get().add(dPanel);
    }
}

-----------------------------------------------------------------------
Galerie.java
-----------------------------------------------------------------------
package galeriePhoto.client;

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
import java.util.ArrayList;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
 
public class Galerie extends Composite {
 
    private HorizontalPanel hPanel = new HorizontalPanel();
    private ArrayList<Image> listImage = new ArrayList<Image>();
    private Button pButton = new Button("Précédent");
    private Button sButton = new Button("Suivant");
    Image img1 = new Image("img/1.png");
    Image img2 = new Image("img/2.png");
    Image img3 = new Image("img/3.png");
    Image img4 = new Image("img/4.png");
    Image img5 = new Image("img/5.png");
    Image img6 = new Image("img/6.png");
    Image img7 = new Image("img/7.png");
    Image img8 = new Image("img/8.png");
    int debut = 0;
    int max = 2;
 
    Galerie() {
        // ajout des images dans l'arraylist
        listImage.add(img1);
        listImage.add(img2);
        listImage.add(img3);
        listImage.add(img4);
        listImage.add(img5);
        listImage.add(img6);
        listImage.add(img7);
        listImage.add(img8);
 
        // propriétés
        hPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
        hPanel.setCellWidth(hPanel, "700px");
        img1.setSize("100px", "100px");
        img2.setSize("100px", "100px");
        img3.setSize("100px", "100px");
        img4.setSize("100px", "100px");
        img5.setSize("100px", "100px");
        img6.setSize("100px", "100px");
        img7.setSize("100px", "100px");
        img8.setSize("100px", "100px");
 
        // Affichage du panel horizontal
        Affich();
 
        // retourne le panel horizontal
        this.initWidget(hPanel);
 
    }
 
    private void Affich() {
        // ajoute le bouton précédent au panel horizontal
        hPanel.add(pButton);
 
        // boucle pour afficher les images dans le caroussel
        MaJ();
 
        // ajoute le bouton suivant
        hPanel.add(sButton);
 
        // évenement lorsqu'on clic sur le bouton suivant
        sButton.addClickHandler(new ClickHandler() {
 
            @Override
            public void onClick(ClickEvent event) {
                if (debut + max < 8) {
                    hPanel.clear();
                    Galerie.this.debut++;
                    Affich();
                }
            }
        });
 
        pButton.addClickHandler(new ClickHandler() {
 
            @Override
            public void onClick(ClickEvent event) {
                if (debut > 0) {
                    hPanel.clear();
                    Galerie.this.debut--;
                    Affich();
                }
            }
        });
    }
 
    private void MaJ() {
 
        int i = 0;
        do {
            if (i >= Galerie.this.debut) {
                hPanel.add(listImage.get(i));
            }
            i = i + 1;
        } while (i < Galerie.this.debut + Galerie.this.max);
 
 
    }
 
}