madde seçimine Gösterilen toString,JavaFX Düzenlenebilir ComboBox: Ben <code>Person</code> sınıfın birkaç nesne ekledik hangi tip <code>Person</code> bir <code>ComboBox<Perosn></code> var
ben aşağı
damla ComboBox'taki Kişi adını göstermek içinsetCellFactory(Callback)
yöntemini kullandık
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;
}
});
setButtonCell(ListCell)
ve combobox
seçimindeki adı göstermek için yöntem.
combobox.setButtonCell(
new ListCell<Object>() {
@Override
protected void updateItem(Person t, boolean bln) {
super.updateItem(t, bln);
if (bln) {
setText("");
} else {
setText(t.getName());
}
}
});
Bu normal durumda normal olarak iyi çalışır, ancak düzenlenebilir birleşik giriş kutusu kullandığımda bu başarısız olur.
Yazarken, öğe seçiminde combobox.setEditable(true);
, açılan kutunun metin alanı (düzenleyici) kişi sınıfı toString()
yöntemini gösterir.
Normal Case:
Düzenlenebilir Olgu:
Bunun için herhangi bir çözüm var mı ?? Ben manken sınıf var
,
Sen İşte(başka bir yol ComboBox kaynak koduna bakarak yoktur) bu amaçla ComboBox bir StringConverter
ayarlamanız gerekir
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 + '}';
}
}
Doğru çözümü verir ve soru sunuldu sonra 1 saat gönderilmiş cevabım baktınız mı? – Sebastian