JavaFX Binding von Objekten

godi

Aktives Mitglied
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:
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
 
I

IMartin

Gast
[JAVA=59]bill11Prop.bind(bill12Prop);[/code]
Wie vermutet heißt das, dass
Code:
bill11Prop
und
Code:
bill12Prop
dasselbe Bill-Objekt referenzieren.
Nach
[JAVA=75]bill11Prop.unbind();[/code]
referenzieren die Properties noch immer dasselbe Bill-Objekt, aber nur noch bis man einem von beiden ein anderes zuweist.
 

godi

Aktives Mitglied
Ah, so ist dass...
Also einfach nach dem unbind
Java:
bill11Prop.set(bill1);
damit wider das ursprüngliche Objekt referenziert wird.

Und was ist eigentlich der unterschied zu bidirektionalen binding und dem normalen?
 
I

IMartin

Gast
"Normales" binding (unidirektional)
Code:
bill11Prop.bind(bill12Prop)
:
Code:
set
bzw.
Code:
setValue
funktionieren nur noch für
Code:
bill12Prop
. Z.B. bei
Code:
bill11Prop.set(Bill)
fliegt dann eine Exception.

Bidirektionales Binding:
Code:
set
bzw.
Code:
setValue
funktionieren für
Code:
bill12Prop
und
Code:
bill11Prop
.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX - Binding & Co AWT, Swing, JavaFX & SWT 42
S UI Model Binding AWT, Swing, JavaFX & SWT 7
S JavaFX MVVM Prinzip und Binding AWT, Swing, JavaFX & SWT 23
B Java FX In control.TreeCell-Implementierung Binding erzeugen AWT, Swing, JavaFX & SWT 0
I ReadOnly-Property-Binding AWT, Swing, JavaFX & SWT 3
N JavaFX TreeItem: Value-Binding AWT, Swing, JavaFX & SWT 1
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
J JavaFX Line Binding AWT, Swing, JavaFX & SWT 8
L JavaFX Horizontale Linie zur Scene binding AWT, Swing, JavaFX & SWT 3
N JavaFX Erste Versuche mit Data-Binding AWT, Swing, JavaFX & SWT 11
M Eclipse-Platform Combo-Binding für User-Einträge AWT, Swing, JavaFX & SWT 9
Eldorado Swing JGoodies Binding: Bindung lösen AWT, Swing, JavaFX & SWT 3
A SWT Eclipse JFace Binding TreeViewer AWT, Swing, JavaFX & SWT 4
M Swing Data Binding und PropertyChangeSupport AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
M Binding einer TextBox an eine Property AWT, Swing, JavaFX & SWT 2
C Binding eines EntityBean als SelectionInList in ComboBox AWT, Swing, JavaFX & SWT 7
M Beans Binding und SWT / Converter AWT, Swing, JavaFX & SWT 2
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
J Drag and Drop von eigenen Objekten AWT, Swing, JavaFX & SWT 3
I Umgang mit vielen Objekten AWT, Swing, JavaFX & SWT 3
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
perlenfischer1984 JavaFX : JTreeView mit verschieden Objekten AWT, Swing, JavaFX & SWT 0
M Java FX Dreidimensionale Anordnung von Objekten AWT, Swing, JavaFX & SWT 4
P Swing Validieren von deserializierten Objekten AWT, Swing, JavaFX & SWT 2
P Vorteile von Tooltip nutzen (wird über allen anderen Objekten angezeigt) AWT, Swing, JavaFX & SWT 3
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
P Swing JList mit Objekten - Name anzeigen AWT, Swing, JavaFX & SWT 5
J Mit mehreren in Objekten in JFrame printen? AWT, Swing, JavaFX & SWT 8
D animierte kameraansicht zwischen gezeichneten objekten AWT, Swing, JavaFX & SWT 4
1 Liste mit Objekten Füllen AWT, Swing, JavaFX & SWT 7
M JList mit 2-zeiligen Objekten füllen AWT, Swing, JavaFX & SWT 7
M Verschwinden von gezeichneten Objekten nach Fensterverkleinerung AWT, Swing, JavaFX & SWT 3
B Swing Laden von serialisierten Objekten (invalid type code AC)) AWT, Swing, JavaFX & SWT 3
C Swing Drag and Drop mit Objekten in einem Fenster. AWT, Swing, JavaFX & SWT 9
M PropertyChangeListener - JTable bei neuen Objekten updaten? AWT, Swing, JavaFX & SWT 3
M JTable Sortierung - -zeilenweise mit Objekten verknüpfen AWT, Swing, JavaFX & SWT 4
X JTable mit verschiedenen Objekten füllen AWT, Swing, JavaFX & SWT 14
S AWT Pong - Probleme mit übergreifenden Objekten && Graphics2D AWT, Swing, JavaFX & SWT 3
S Spielfeld mit unförmigen Objekten anklickbar machen? AWT, Swing, JavaFX & SWT 4
T Sichtbarmachen von Objekten auf mehreren JPanels AWT, Swing, JavaFX & SWT 2
W setEnabled in Container Objekten (JScrollPane) AWT, Swing, JavaFX & SWT 5
Q Dynamische Zahl und Positionierung von Objekten AWT, Swing, JavaFX & SWT 5
L JPanel mit Objekten selektieren wie unter Windows / Ubuntu AWT, Swing, JavaFX & SWT 4
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2
P JTable:Sortierung nach der Zeit/Spalte mit Calendar-Objekten AWT, Swing, JavaFX & SWT 2
M Probleme beim Hinzufügen von Objekten zu getContentPane() AWT, Swing, JavaFX & SWT 2
T Drag&Drop mit Objekten! Grundsätzlich. AWT, Swing, JavaFX & SWT 3
C Positionieren von Objekten AWT, Swing, JavaFX & SWT 11
T Gleichzeitiges Steuern von 2 Objekten über Tastatur AWT, Swing, JavaFX & SWT 8
I Größe von Swing-Objekten ändern AWT, Swing, JavaFX & SWT 13
A Attribute von Objekten in JTable-Zeilen anzeigen AWT, Swing, JavaFX & SWT 2
S JTree mit eigenen Objekten füllen AWT, Swing, JavaFX & SWT 4
S Problemen mit Canvas-Objekten im GridLayout AWT, Swing, JavaFX & SWT 8
N JPanels von Objekten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben