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:
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 appliquerCode:
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: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.Citation:
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:
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; } }