Ho un ComboBox<Perosn>
di tipo Person
, in cui ho aggiunto qualche oggetto di Person
classe,JavaFX modificabile ComboBox: Questa è toString sulla selezione della voce
ho usato setCellFactory(Callback)
metodo per mostrare nome della persona in ComboBox discesa
combobox.setCellFactory(
new Callback<ListView<Person >, ListCell<Person >>() {
@Override
public ListCell<Person > call(ListView<Person > p) {
ListCell cell = new ListCell<Person >() {
@Override
protected void updateItem(Person item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText("");
} else {
setText(item.getName());
}
}
};
return cell;
}
});
E, setButtonCell(ListCell)
metodo per mostrare il nome in combobox
sulla selezione.
combobox.setButtonCell(
new ListCell<Object>() {
@Override
protected void updateItem(Person t, boolean bln) {
super.updateItem(t, bln);
if (bln) {
setText("");
} else {
setText(t.getName());
}
}
});
Questo funziona perfettamente con il caso normale, ma quando uso combobox modificabile, questo non riesce.
Quando scrivo, combobox.setEditable(true);
quindi sulla selezione dell'oggetto il campo di testo (editor) della casella combinata mostra il metodo toString()
della classe persona.
Caso normale:
Caso modificabile:
C'è qualche soluzione per questo ??
ho una classe del modello,
public class Person {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" + "name=" + name + ", age=" + age + '}';
}
}
Hai guardato la mia risposta che dà la soluzione giusta ed è stato postato 1 ora dopo la tua domanda è stata presentata? – Sebastian