gpt4 book ai didi

JavaFx可观察实体无需更改实体本身

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:58 24 4
gpt4 key购买 nike

我有一个实体类,它有很多字段,我想为这个类创建可观察的实体,这样我就可以使用它来绑定(bind)

实体的代码无法更改。我该怎么做?

假设我的代码如下所示:

class Car {

private Wheel wheel;
private Engine engine;
private Door door;

// and a lot of field.

}

并且我想创建 ObservableCar ,每次任何字段更改时它都会变得无效。

The car code doesn't change. And the class of the field too.

我该怎么做?

提前致谢。

最佳答案

实现您的Car使用 JavaFX 属性的类:

public class Car {

private final ObjectProperty<Wheel> wheel = new SimpleObjectProperty<>();
public ObjectProperty<Wheel> wheelProperty() {
return wheel ;
}
public final Wheel getWheel() {
return wheelProperty().get();
}
public final void setWhee(Wheel wheel) {
wheelProperty.set(wheel);
}

// other properties...

}

现在您可以创建 ObjectBinding<Car>当任何属性无效时,该属性也会无效:

public class CarBinding extends ObjectBinding<Car> {

private final Car car ;

public CarBinding(Car car) {
this.car = car ;
bind(car.wheelProperty(), car.engineProperty(), ...);
}

@Override
public Car computeValue() {
return car ;
}
}

如果更方便,您可以将绑定(bind)直接构建到您的汽车类中:

public class Car {

// properties as before...

private final ObjectBinding<Car> carBinding = new ObjectBinding<Car>() {
{
bind(wheelProperty(), engineProperty(), ...);
}

@Override
public Car computeValue() {
return Car.this ;
}
}

public ObjectBinding<Car> asBinding() {
return carBinding ;
}
}

关于JavaFx可观察实体无需更改实体本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34856744/

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