UnbindBidirectional

Résolu
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -  
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -
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 176 Date d'inscription   Statut Membre Dernière intervention  
 
        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