Bojour,
Je viens vers vous car je bloque sur une chose que l'on pouvait faire avec une certaine simplicité avec Swing.
Il s'agit d'une combobox qui est remplie avec des valeurs comme cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private final ObservableList<Couple> data1 = FXCollections.observableArrayList( new Couple(1,"Azamat","Desc1"), new Couple(2,"Azamati","Desc2"), new Couple(3,"Azamat3","zzz"), new Couple(4,"Azamat4","yyy"), new Couple(5,"Azamat5","aaa"), new Couple(6,"Veli","bbb"), new Couple(7,"Azemat1","ccc"), new Couple(8,"Azemat2","ddd"), new Couple(9,"Azemat3","eee"), new Couple(10,"Nurbek","fff"));
Ma combo est plus au moins comme cela:
Je peux avoir la valeur numérique sans problème (getPremier) SEULEMENT si je choisis une valeur qui existe dans la combo, mais des que j'écris une valeur inexistente ou que je essaie de lui appliquer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ComboBox<Couple> comboCouple = new ComboBox<>(); comboCouple.setEditable(true); comboCouple.setItems(data1) ; new AutoCompleteComboBoxListener(comboCouple); comboCouple.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Couple>() { @Override public void changed(ObservableValue<? extends Couple> arg0, Couple arg1, Couple arg2) { if (arg2 != null) { System.out.println("Selected: " + arg2.getPremier()); } } });
J'ai droit à l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part new AutoCompleteComboBoxListener(comboCouple);
J'ai lu quelque chose de appliquer un StringConverter lorsqu'on travaille avec des combobox editables, j'ai essayé quelques exemples de StringConverter sans succes.java.lang.ClassCastException: java.lang.String cannot be cast to es.ioseph.inicio.Couple
Ma classe Couple est ici:
Merci si quelqu'un peut me donner des idées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public class Couple<T, U, V> { private T x; private U y; private V z; public Couple (T premier, U second, V descr){ x = premier; y=second;z=descr; } public T getPremier(){ return x; } public U getSecond(){ return y; } public V getDescr(){ return z; } public void affiche(){ System.out.println("1er: "+ x + " * 2me: "+ y); } public String toString() { return (String) y; } }
Partager