Zone de sélection Combo-Box dans JavaFX 2
J'ai un combo en javaFX qui est rempli avec des pays.
Mon objet:
public static class CountryObj {
private String TCountryDescr;
private String TCountryCode;
private CountryObj(String CountryDescr,String CountryCode) {
this.TCountryDescr = CountryDescr;
this.TCountryCode = CountryCode;
}
public String getTCountryCode() {
return TCountryCode;
}
public void setTCountryCode(String fComp) {
TCountryCode= fComp;
}
public String getTCountryDescr() {
return TCountryDescr;
}
public void setCountryDescr(String fdescr) {
TCountryDescr = fdescr;
}
@Override
public String toString() {
return TCountryDescr;
}
}
Puis j'ai ma observables liste:
private final ObservableList<CountryObj> CountrycomboList =
FXCollections.observableArrayList(
new CountryObj ("United States", "US"),
new CountryObj ("United Kingdom", "UK"),
new CountryObj ("France", "FR"),
new CountryObj ("Germany", "DE"));
Puis mon combo. Que le nom du pays est visible et je peux avoir le code du pays pour mon propre usage:
private ComboBox<CountryObj> cCountry1 = new ComboBox<>();
cbCountry1.setItems(CountrycomboList);
cbCountry1.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<CountryObj>() {
@Override
public void changed(ObservableValue<? extends CountryObj> arg0, CountryObj arg1, CountryObj arg2) {
if (arg2 != null) {
System.out.println("Selected Country: " + arg2.getTCountryCode());
}
}
});
Comment puis-je auto-sélectionnez par exemple l'Allemagne. Si je sais que le code du pays? "DE"
source d'informationauteur Elias Elias
Vous devez vous connecter pour publier un commentaire.
Quelques mois une vieille question, mais voici une solution plus élégante pour ce type de problèmes.
Modifier le
CountryObj
de classe et de remplacer leshashCode
etequals
fonctions comme ci-dessous:Maintenant dans votre code si vous exécutez l'instruction suivante, il va automatiquement sélectionner "Allemagne" pour vous.
Vous pouvez également passer un objet de CountryObj à
select
méthode ci-dessus.Je pense que la solution la plus simple est d'écrire un autoSelect fonction qui recherche la correspondance CountryObj dans votre ObservableList. Une fois que vous trouver la bonne CountryObjdire la zone de liste déroulante pour définir cette valeur. Il devrait ressemble à quelque chose comme ça...
EDIT:
Celui-ci peut être reconstruit pour réutilisables méthode pour tous les
ComboBox'es
qui prennent différents type de paramètre:où
Func
est une interface:Comment appliquer cette méthode:
Si les deux comboBox sont issus de la même Matrice, d'assemblage, de colonne et de deux, alors ils ont la même séquence. Ensuite, vous pouvez utiliser l'index.
"États-unis" est sur la position d'indice 1 "NOUS" aussi sur la position d'indice 1:
La solution de Brendan et Branislav Lazic est parfait, mais nous pouvons encore améliorer l'appel à la autoSelectComboBoxValue méthode :
🙂