gpt4 book ai didi

java - 将 TableView 与通用对象属性一起使用

转载 作者:行者123 更新时间:2023-11-30 07:25:13 25 4
gpt4 key购买 nike

我想通过 javafx 应用程序显示十几个参数。我只是选择 TableView 来呈现这些参数。

这些参数如下所示:

public abstract class AbstractParameter<T> {

private String myKey;
private ObjectProperty<T> myValue = new SimpleObjectProperty<T>()
private boolean constantValue;


public AbstractParameter<T>(){
//...
}

ObjectProperty<T> property(){
return property;
}

}

这里请注意,a 有多个子类,例如 StringParameter、IntegerParameter、LongParameter、BooleanParameter 等...

我使用这种方法是因为一些参数是在运行时定义/更新的

现在这是我的ParametersUIController

public Class ParametersUiController {

@FXML
private TableView<AbstractParameter<?>> paramsTable;
@FXML
private TableColumn<AbstractParameter<?>, String> paramKeyCol;
@FXML
private TableColumn<AbstractParameter<?>, String> paramValueCol;
@FXML
private TableColumn<AbstractParameter<?>, Boolean> paramConstantValueCol;


private ObservableList<AbstractParameter<?>> paramsData = FXCollections.observableArrayList();

/**
* Just add some sample data in the constructor.
*/
public PersonTableController() {
/* getting a list of params for a service
the params are defined in list
*/
for(AbstractParameter<?> param : rawData)
paramsData.add(param);
}

/* I cast the value type to string always */

pValueCol.setCellValueFactory(new Callback<CellDataFeatures<AbstractParameter<?>, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<AbstractParameter<?>, String> param) {
return new SimpleStringProperty(param.getValue().property().get().toString());
}
});

}

我正在措辞是否有其他正确的方法来显示泛型类型 T,而无需每次都在运行时使用 String 来转换定义的参数?

最佳答案

你可以使用这个:

pValueCol.setCellValueFactory(new PropertyValueFactory("generic"));

并在模型中创建这样的方法:

ObjectProperty<T> genericProperty(){ 
return property;
}

声明new PropertyValueFactory("generic")在模型中查找名为 genericProperty 的方法。它可以返回包含在 ObjectProperty<T> 中的通用值。 .

关于java - 将 TableView 与通用对象属性一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36900244/

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