web-dev-qa-db-fra.com

javafx ComBobox ajouter un écouteur sur la valeur d'élément sélectionnée

J'ai besoin de tester la valeur d'un élément sélectionné pour appeler différentes méthodes, donc j'écris ce code en ajoutant un écouteur, mais le code génère une erreur de syntaxe

@FXML
private JFXComboBox<String> cmbComp;

cmbComp.valueProperty().addListener(new ChangeListener<String>() {
        public void changed(ObservableValue<String> composant, String oldValue, String newValue) throws SQLException {

            if(/*test item value*/){
                /*do something*/
            }else{
                /*do other thing*/
            }
        }
    });

aussi je n'ai pas besoin d'une ancienne valeur et d'une nouvelle, il suffit de tester la valeur sélectionnée, comment puis-je passer des arguments?


J'ai trouvé l'erreur, voici le nouveau code, j'espère qu'il aide les autres

cmbComp.getSelectionModel().selectedItemProperty().addListener( (options, oldValue, newValue) -> {
           System.out.println(newValue)
    }
    ); 
13
devhicham

Une solution un peu plus simple et évitant certaines lignes de code supplémentaires consiste à ajouter un écouteur d'actions (idéalement à partir du générateur de scène) à la zone de liste déroulante, comme ceci:

private void comboAction(ActionEvent event) {

    System.out.println(comboBox_DbTables.getValue());

}
3
rainer