I am just learning JavaFX 8. It seems if you want to display something in a control, say a TableColumn
, you need that something to be an instance of ObservableValue
, for example, a SimpleStringProperty
.
So, in the commonly used Person
object, I might have a SimpleStringProperty
for "firstName", and then I would be able to use that as the value of TableColumn
, like this:
TableColumn<Person, String> firstNameCol =
new TableColumn<Person, String>("First Name");
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("firstName"));
But, Person
is what I would call a "domain" class -- something that my model would freely refer to and use. I don't want my domain and model layers to be aware of / dependent on the fact that the application is displayed using JavaFX.
Am I right in thinking that the model/domain should be kept pure in that regard? If so, what is the best way to accomplish that using JavaFX? E.g., should I write adapter classes somehow for my domain objects to present them with ObservableValues
?