Hallo,
in JavaFX kann ja einem "normalen" Objekt Properties hinzugefügt werden und mit bind verbunden werden.
Was passiert aber genau wenn zb "objekt1.bind(objekt 2)" ausgeführt wird? bekommt dann objekt 1 nur den Pointer auf objekt2 ?
Wenn unbind ausgeführt wird und danach im objekt2 etwas geändert wird dann wird dies auch in objekt1 übernommen.
Sollten die Objekte nach dem unbind normalerweise wieder voneinander unabhängig sein?
Das hätte ich mir erwartet.
Hier habe ich noch einen Testcode:
Warum ist nach dem unbind bill1 bzw bill11Prop noch immer von bill2 abhängig?
godi
in JavaFX kann ja einem "normalen" Objekt Properties hinzugefügt werden und mit bind verbunden werden.
Was passiert aber genau wenn zb "objekt1.bind(objekt 2)" ausgeführt wird? bekommt dann objekt 1 nur den Pointer auf objekt2 ?
Wenn unbind ausgeführt wird und danach im objekt2 etwas geändert wird dann wird dies auch in objekt1 übernommen.
Sollten die Objekte nach dem unbind normalerweise wieder voneinander unabhängig sein?
Das hätte ich mir erwartet.
Hier habe ich noch einen Testcode:
Java:
package binding;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
class Bill {
private String name = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// Define the property
private DoubleProperty amountDue = new SimpleDoubleProperty();
// Define a getter for the property's value
public final double getAmountDue(){return amountDue.get();}
// Define a setter for the property's value
public final void setAmountDue(double value){amountDue.set(value);}
// Define a getter for the property itself
public DoubleProperty amountDueProperty() {return amountDue;}
}
public class Main {
public static void main(String[] args) {
Bill bill1 = new Bill();
bill1.setAmountDue(100.00);
bill1.setName("Bill1");
Bill bill2 = new Bill();
bill2.setName("Bill2");
bill2.setAmountDue(200.00);
System.out.println("Test Binding");
ObjectProperty<Bill> bill11Prop = new SimpleObjectProperty<Bill>();
bill11Prop.set(bill1);
ObjectProperty<Bill> bill12Prop = new SimpleObjectProperty<Bill>();
bill12Prop.set(bill2);
System.out.println(bill11Prop.get().getName() + ": " + bill11Prop.get().getAmountDue());
System.out.println(bill12Prop.get().getName() + ": " + bill12Prop.get().getAmountDue());
System.out.println("Bind");
bill11Prop.bind(bill12Prop);
System.out.println(bill11Prop.get().getName() + ": " + bill11Prop.get().getAmountDue());
System.out.println(bill12Prop.get().getName() + ": " + bill12Prop.get().getAmountDue());
System.out.println("Set Bill1 = 1");
bill1.setAmountDue(1);
System.out.println(bill11Prop.get().getName() + ": " + bill11Prop.get().getAmountDue());
System.out.println(bill12Prop.get().getName() + ": " + bill12Prop.get().getAmountDue());
System.out.println("Set Bill2 = 2");
bill2.setAmountDue(2);
System.out.println(bill11Prop.get().getName() + ": " + bill11Prop.get().getAmountDue());
System.out.println(bill12Prop.get().getName() + ": " + bill12Prop.get().getAmountDue());
System.out.println("Unbind");
bill11Prop.unbind();
System.out.println("Set Bill1 = 10");
bill1.setAmountDue(10);
// Warum ist nach dem unbind bill1 bzw bill11Prop noch immer von bill2 abhängig?
System.out.println(bill11Prop.get().getName() + ": " + bill11Prop.get().getAmountDue());
System.out.println(bill12Prop.get().getName() + ": " + bill12Prop.get().getAmountDue());
System.out.println("Set Bill2 = 20");
bill2.setAmountDue(20);
System.out.println(bill11Prop.get().getName() + ": " + bill11Prop.get().getAmountDue());
System.out.println(bill12Prop.get().getName() + ": " + bill12Prop.get().getAmountDue());
}
}
Warum ist nach dem unbind bill1 bzw bill11Prop noch immer von bill2 abhängig?
godi