gpt4 book ai didi

JavaFX 扩展 PropertyValueFactory

转载 作者:行者123 更新时间:2023-11-30 08:16:12 26 4
gpt4 key购买 nike

我有一个对象的 TableView,其中包含映射到其他类型的其他对象的 Id。我需要一个 TableColumn,它不显示 id,而是显示映射到 id 的对象。我想我可以通过创建自己的 PropertyValueFactory 来做到这一点,如下所示:

public class SomePropertyValueFactory extends PropertyValueFactory<SomeObject, String> {

public SomePropertyValueFactory(String property) {
super(property);
}

@Override
public ObservableValue<String> call(CellDataFeatures<SomeObject, String> parameter) {
SomeOtherObject obj = function(parameter.getValue().getId());
return obj.toString();
}

}

这是一个可行的解决方案吗?它能正常运行吗?我已经尝试过,但抛出了 LoadException:

Caused by: java.lang.InstantiationException: ui.view.SomePropertyValueFactory
at java.lang.Class.newInstance(Unknown Source)
at sun.reflect.misc.ReflectUtil.newInstance(Unknown Source)
... 21 more
Caused by: java.lang.NoSuchMethodException: ui.view.SomePropertyValueFactory.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
... 23 more

最佳答案

如果您打算让 FXML 使用某个类,则它必须具有无参构造函数,或者(在 JavaFX 8 中)它必须具有参数注释为 @NamedArg 的构造函数。 。所以你可以这样做

public class SomePropertyFactory ... {

public SomePropertyFactory(@NamedArg("property") String property) {
// ...
}

// ...
}

此外,由于 call 的返回值,您发布的代码将无法编译。方法是String ,它应该是 ObservableValue<String> .

但是,我真的不明白将其作为 PropertyValueFactory 的子类有什么意义。根本不。为什么不直接实现 Callback直接地?该类的唯一用途是 setCellValueFactory(...)参数类型为Callback 。而且你似乎根本没有从你的父类(super class)继承任何东西。

关于JavaFX 扩展 PropertyValueFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29633464/

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