UnbindBidirectional

Résolu/Fermé
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 15 déc. 2019 à 17:48
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 28 déc. 2019 à 20:00
Bonjour je suis bloque sur un problème plutôt bête je pense mais je ne trouve pas la solution ...
J'essaye de faire un bind d'un élément que j'ai sélectionnée dans une listView.
Quand je sélectionne un élément de ma ListView, j'aimerai qu’un label récupère le nom de l’objet et l'affiche. J'arrive à faire cela sauf que l'affichage de mon objet et l’affichage java (javafx.scene.control.ListView$ListViewBitSetSelectionModel@432b0232) et je voudrait le nom je je lui est donnée.
Pouvez vous m'aidez s'il vous plaît ?
Voici mon code :

Le code FXML (je pense que l'erreur est ici )
            <ListView fx:id="listDeCarte" orientation="HORIZONTAL" />
            <TextField fx:id="detailCarte" text="${listDeCarte.selectionModel}" BorderPane.alignment="CENTER" />


et le code de la fenêtre associé :

    private ListView<Carte> listDeCarte;
    @FXML
    private TextField detailCarte;


    public void initialize() throws IOException {

        listDeCarte.itemsProperty().bindBidirectional(manche.carteListJoueurProperty());
        listDeCarte.setCellFactory(param -> new CarteCellFactory());

        listDeCarte.getSelectionModel().selectedItemProperty().addListener((___, o, n) ->{
            if (n != null) {

                detailCarte.textProperty().unbindBidirectional(n.nomCarteProperty());
            }
            if (o != null) {
                detailCarte.textProperty().unbindBidirectional(o.nomCarteProperty());
            }
        });
    }



Merci d'avance pour toute réponse et aide que vous m'apporterais.

1 réponse

Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
28 déc. 2019 à 20:00
        listDeCarte.getSelectionModel().selectedItemProperty().addListener((o, ov, nv) -> {
            if (ov != null) detailCarte.textProperty().unbindBidirectional(ov.nomCarteProperty());
            if (nv != null) {
               // detailCarte.textProperty().bindBidirectional(nv.nomCarteProperty());
                detailCarte.textProperty().bind(Bindings.format("B",nv.nomCarteProperty()));

            } else {
                detailCarte.setText("");
            }
        });
0