JavaFX and FXML - no data displayed in TableView
<p>I'm pretty new at JavaFX and i'm trying basic functionalities. I'm also using SceneBuilder (FXML) to create my views.</p>

<p>I created a <code>TableView</code> with SceneBuilder, with no columns (will be added in code) with id <code>tablePeople</code>. <strong>The goal is to store people into this table, like many examples of basic use of <code>TableView</code>.</strong>
Here is my <code>Person</code> class (I want to store every properties of this class in the table) :</p>

<pre><code>public class Person {

private SimpleStringProperty name;
private SimpleStringProperty forename;
private ObjectProperty&lt;LocalDate&gt; date; 
private SimpleStringProperty message;

    public Person(String name, String forename, LocalDate date, String message) {
        this.name = new SimpleStringProperty(name);
        this.forename = new SimpleStringProperty(forename);
        this.date = new SimpleObjectProperty&lt;LocalDate&gt;(date);
        this.message = new SimpleStringProperty(message);
    }

    // all getters/setters here
}
</code></pre>

<p>I correctly get my TableView from FXML: </p>

<pre><code>@FXML
private TableView&lt;Person&gt; tablePeople;
</code></pre>

<p>At the start of the application (after loading FXML and before showing the stage), I fill my <code>TableView</code> with random datas by using this method I created in FXML controller:</p>

<pre><code>public void initParametersView() {
    tablePeople.setEditable(true);
    tablePeople.setDisable(false);
    String dateStr = "01.01.2001";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
    LocalDate date = null;
    date = LocalDate.parse(dateStr,formatter);
    ObservableList&lt;Person&gt; people = FXCollections.observableArrayList(

                new Person("Name1", "Forename1", date, "a"),
                new Person("Name2", "Forename2", date, "b"),
                new Person("Name3", "Forename3", date, "c"),
                new Person("Name4", "Forename4", date, "d")

            );

    tablePeople.setItems(people);

    TableColumn&lt;Person, String&gt; tcName = new TableColumn&lt;&gt;("Name");
    tcName.setCellValueFactory(new PropertyValueFactory&lt;Person,String&gt;("name"));
    tablePeople.getColumns().add(tcName);

    TableColumn&lt;Person, String&gt; tcForename = new TableColumn&lt;&gt;("Forename");
    tcForename.setCellValueFactory(new PropertyValueFactory&lt;Person,String&gt;("forename"));
    tablePeople.getColumns().add(tcForename);

    TableColumn&lt;Person, LocalDate&gt; tcDate = new TableColumn&lt;&gt;("Date");
    tcDate.setCellValueFactory(new PropertyValueFactory&lt;Person,LocalDate&gt;("date"));
    tablePeople.getColumns().add(tcDate);

    TableColumn&lt;Person, String&gt; tcMessage = new TableColumn&lt;&gt;("Message");
    tcMessage.setCellValueFactory(new PropertyValueFactory&lt;Person,String&gt;("message"));
    tablePeople.getColumns().add(tcMessage);

}
</code></pre>

<p>As you can see, through this:</p>

<ul>
<li>I create an ObservableList of Person which is given to the table.</li>
<li>I create each column which are (should...) using Person's properties values and add it to the <code>TableView</code></li>
</ul>

<p><strong>RESULT :</strong> </p>

<p><strong>I get the TableView with the columns I created but datas are not displayed.</strong> However, datas seems to have been put into the table, because I can select the first 4 lines of the table (4 instances of Person were created). You can see it here:
<a href="https://i.stack.imgur.com/NyPJ8.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NyPJ8.png" alt="Result"></a></p>

<p><strong>What I tried</strong></p>

<ul>
<li>I first tried to create my columns with SceneBuilder, get them in my controller and set cell values directly, but same result. </li>
<li>I tried functions on table/columns like <code>setEditable</code>, <code>refresh</code>, but still no data displayed :-( </li>
</ul>

<p>Where am I wrong? </p>

<p>Thank you very much for the help. </p>