gpt4 book ai didi

java - ListView 控件(如 ComBox 控件)中 setConverter 的等效项在哪里?

转载 作者:行者123 更新时间:2023-12-01 19:44:16 26 4
gpt4 key购买 nike

ComboBox 控件有一个 setConverter 方法,请参阅 JavaFX ComboBox - Display text but return ID on selection举个例子。我正在尝试调整该问题中接受的答案以使用 ListView 控件。我在任何文档中都没有看到 ListView 类的 setConverter 方法。

@FXML   private ListView<RowlvPqAttributes>  lvPqAttributes;
//...
class RowlvPqAttributes {
private String ID;
private String text;
public RowlvPqAttributes(String ID, String text) {
setID(ID);
setText(text);
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
private void initlvPqAttributes() {
lvPqAttributes.setConverter(new StringConverter<RowlvPqAttributes>() {
@Override
public String toString(RowlvPqAttributes object) {
return object.getText();
}

@Override
public RowlvPqAttributes fromString(String string) {
return lvPqAttributes.getItems().stream().filter(ap ->
ap.getText().equals(string)).findFirst().orElse(null);
}
});

Here is the compile error I get

如果我接受建议的修复,它不会有帮助:

最佳答案

它们的工作方式不同,对于 ListView,您使用 setCellFactory 方法配置显示

lvPqAttributes.setCellFactory(lv -> new ListCell<RowlvPqAttributes>() {
@Override
public void updateItem(RowlvPqAttributes row, boolean empty) {
super.updateItem(row, empty) ;
setText(empty ? null : row.getText());
}
}

从所选项目获取数据:

RowlvPqAttributes selected = lvPqAttributes.getSelectionModel().getSelectedItem();
String selectedID = selected.getID();
String selectedText = selected.getText();

关于java - ListView 控件(如 ComBox 控件)中 setConverter 的等效项在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053115/

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