JavaFX How to - Create user object(POJO) frp, bindable Property








Question

We would like to know how to create user object(POJO) frp, bindable Property.

Answer

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
/* w w w.j a v  a2  s.  c om*/
public class Main {
    public static void main(String[] args) {
        Student contact = new Student("FirstName", "LastName");
        StringProperty fname = new SimpleStringProperty();
        fname.bindBidirectional(contact.firstNameProperty());
        StringProperty lname = new SimpleStringProperty();
        lname.bindBidirectional(contact.lastNameProperty());

        System.out.println(fname.getValue() + " " + lname.getValue());
        System.out.println(contact.getFirstName() + " " + contact.getLastName());
        
        fname.setValue("new FirstName");
        lname.setValue("new LastName");

        System.out.println(fname.getValue() + " " + lname.getValue());
        System.out.println(contact.getFirstName() + " " + contact.getLastName());
    }
}

class Student {

    private SimpleStringProperty firstName = new SimpleStringProperty();
    private SimpleStringProperty lastName = new SimpleStringProperty();

    public Student(String fn, String ln) {
        firstName.setValue(fn);
        lastName.setValue(ln);
    }

    public final String getFirstName() {
        return firstName.getValue();
    }

    public StringProperty firstNameProperty() {
        return firstName;
    }

    public final void setFirstName(String firstName) {
        this.firstName.setValue(firstName);
    }

    public final String getLastName() {
        return lastName.getValue();
    }

    public StringProperty lastNameProperty() {
        return lastName;
    }

    public final void setLastName(String lastName) {
        this.lastName.setValue(lastName);
    }
}

The code above generates the following result.