Ma liste se duplique [Résolu]

Signaler
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
-
Hamster18
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
-
Bonjour j'essaye de faire un jeu en java/javafx et j'essaye de réaliser un tableau des scores sauf que ma liste se duplique c'est-à-dire que j'ai deux fois l'affichage des éléments de ma liste. J'ai beau lire et relire mon code je ne voit pas ou je fait ce "double remplissage". Pouvez vous m'aider à trouver mon erreur s'il vous plait ?
Merci d'avance pour vos réponse.

---Je pense que l'erreur est dans cette partie---
public class ListeJoueurs {
    private static ObservableList<Joueur> listJoueurObs = FXCollections.observableArrayList();
    private static ListProperty<Joueur> listJoueur = new SimpleListProperty<>(listJoueurObs);
        public ObservableList<Joueur> getLesPersonnes() {
            return listJoueur.get();
        }
        public void setListJoueur(ObservableList<Joueur> value) {listJoueur.set(value);}
        public static ListProperty<Joueur> listJoueurProperty() {
            return listJoueur;
        }

    public ListeJoueurs () {
        listJoueurObs.add(new Joueur("cloclo"));
        listJoueurObs.add(new Joueur("hamster18"));
        listJoueurObs.add(new Joueur("Alex"));
    }
}


    @FXML
    private TableView<Joueur> tableDesScores;
    @FXML

    private final ListeJoueurs listeJoueurs = new ListeJoueurs();

    private final TableColumn<Joueur, String> columnSurname = new TableColumn<>("Surname");
    private final TableColumn<Joueur, Integer> columnScore = new TableColumn<>("Score");
 public void initialize() {
        for(Joueur elem: listeJoueurs.getLesPersonnes())///////////////A SUPPRIMER
        {
            System.out.println (elem.getSurname());
        }
        columnSurname.setCellValueFactory(new PropertyValueFactory<>("surname"));
        tableDesScores.getColumns().add(columnSurname);

        columnScore.setCellValueFactory(new PropertyValueFactory<>("nbPartieGagnee"));
        tableDesScores.getColumns().add(columnScore);


        tableDesScores.itemsProperty().bind(listeJoueurs.listJoueurProperty());

    }

1 réponse

Messages postés
16101
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
20 janvier 2020
2498
Bonjour,

Ta liste est static (donc commune à tous les objets) mais elle est remplie dans le constructeur.
Donc chaque fois qu'un objet est construit la liste commune est remplie de nouveaux objets.
Il faut soit avoir une liste static avec une initialisation static, soit une liste par objet avec une initialisation dans le constructeur.
Hamster18
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019

Bonsoir,
D'accord merci pour ce petit cours =)