gpt4 book ai didi

javafx StringConverter 最后一个对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:23 26 4
gpt4 key购买 nike

我在创建可编辑的 ListView 时遇到了一些小问题。

所以我有一个包含两个字段的城市类:idname,我从数据库中创建了一个城市 ObservableList 并将其分配给我的 ListView,然后我已经创建了我的 cellFactory:

@DatabaseTable(tableName = "city")
public class City {

@DatabaseField(generatedId = true)
private int id;

@DatabaseField
private String name;

public City() {}
}

citiesList.setCellFactory(new Callback<ListView<City>, ListCell<City>>() {

@Override
public ListCell<City> call(ListView<City> param) {

ListCell<City> cells = new TextFieldListCell<>(new StringConverter<City>() {

@Override
public String toString(City object) {
return object.getName().trim();
}

@Override
public City fromString(String string) {
// how to modify the object that was in the cell???
return null;
}
});

return cells;
}
});

我想知道在调用 fromString 时是否可以获取单元格(城市)中当前值的引用

我想这样做是为了允许用户更改城市名称而无需更改其 Id 字段。

最佳答案

如果先创建cell,再创建converter,可以在converter中引用cell.getItem()。以下似乎有效:

citiesList.setCellFactory(lv -> {
TextFieldListCell<City> cell = new TextFieldListCell<City>();
StringConverter<City> converter = new StringConverter<City>() {

@Override
public String toString(City city) {
return city.getName();
}

@Override
public City fromString(String string) {
City city = cell.getItem();
if (city == null) {
City newCity = new City();
newCity.setName(string);
return newCity;
} else {
city.setName(string);
return city ;
}
}

};

cell.setConverter(converter);

return cell ;
});

关于javafx StringConverter 最后一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32466780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com