无法使用提取器实例化 ObservableList
Cannot instantiate ObservableList with an extractor
我有一个自定义对象 FermentableInRecipe
,它填充 TableView
。为了响应列表中项目的更改以及列表本身,我决定使用提取器。这是我的 ObservableList
:
的声明和实例化
private ObservableList<FermentableInRecipe> fermentablesInRecipe =
FXCollections.observableArrayList(item -> new Observable[]{item.WeightProperty()});
这里是我自定义的相关段class:
public class FermentableInRecipe {
private DoubleProperty weight;
...
public Double getWeight() {
return this.weight.getValue();
}
public void setWeight(Double value) {
this.weight.setValue(value);
}
public DoubleProperty WeightProperty() {
if (weight == null) {
weight = new SimpleDoubleProperty(0.0);
}
return weight;
}
...
}
在我下面提供的 link 中,这种方法奏效了。但是 Netbeans 告诉我 "DoubleProperty
无法转换为 Observable
"。我明白为什么会这样,但我不明白为什么它在下面的 link 中起作用而不对我起作用,以及我应该如何创建提取器并将其 link 到 weightProperty()
如果此方法不起作用,请执行此操作。
链接:
JavaFX 2.0 Choice Box Issue. How to update a choiceBox, which represents a list of objects, when an object is updated?
提前致谢。如果我遗漏了任何重要信息,请告诉我。
您编写的代码没有任何问题,这对我来说编译得很好:
import javafx.application.Application;
import javafx.beans.Observable;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.stage.Stage;
public class JavaFXApplication1 extends Application {
class FermentableInRecipe {
private DoubleProperty weight;
public Double getWeight() {
return this.weight.getValue();
}
public void setWeight(Double value) {
this.weight.setValue(value);
}
public DoubleProperty WeightProperty() {
if (weight == null) {
weight = new SimpleDoubleProperty(0.0);
}
return weight;
}
}
private ObservableList<FermentableInRecipe> fermentablesInRecipe = FXCollections.observableArrayList(item -> new Observable[]{item.WeightProperty()});
@Override
public void start(Stage primaryStage) throws Exception {
}
}
我建议仔细检查导入,并确保您没有错误地导入 java.util.Observable
或类似内容。
我有一个自定义对象 FermentableInRecipe
,它填充 TableView
。为了响应列表中项目的更改以及列表本身,我决定使用提取器。这是我的 ObservableList
:
private ObservableList<FermentableInRecipe> fermentablesInRecipe =
FXCollections.observableArrayList(item -> new Observable[]{item.WeightProperty()});
这里是我自定义的相关段class:
public class FermentableInRecipe {
private DoubleProperty weight;
...
public Double getWeight() {
return this.weight.getValue();
}
public void setWeight(Double value) {
this.weight.setValue(value);
}
public DoubleProperty WeightProperty() {
if (weight == null) {
weight = new SimpleDoubleProperty(0.0);
}
return weight;
}
...
}
在我下面提供的 link 中,这种方法奏效了。但是 Netbeans 告诉我 "DoubleProperty
无法转换为 Observable
"。我明白为什么会这样,但我不明白为什么它在下面的 link 中起作用而不对我起作用,以及我应该如何创建提取器并将其 link 到 weightProperty()
如果此方法不起作用,请执行此操作。
链接:
JavaFX 2.0 Choice Box Issue. How to update a choiceBox, which represents a list of objects, when an object is updated?
提前致谢。如果我遗漏了任何重要信息,请告诉我。
您编写的代码没有任何问题,这对我来说编译得很好:
import javafx.application.Application;
import javafx.beans.Observable;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.stage.Stage;
public class JavaFXApplication1 extends Application {
class FermentableInRecipe {
private DoubleProperty weight;
public Double getWeight() {
return this.weight.getValue();
}
public void setWeight(Double value) {
this.weight.setValue(value);
}
public DoubleProperty WeightProperty() {
if (weight == null) {
weight = new SimpleDoubleProperty(0.0);
}
return weight;
}
}
private ObservableList<FermentableInRecipe> fermentablesInRecipe = FXCollections.observableArrayList(item -> new Observable[]{item.WeightProperty()});
@Override
public void start(Stage primaryStage) throws Exception {
}
}
我建议仔细检查导入,并确保您没有错误地导入 java.util.Observable
或类似内容。