JavaFX 8 Custom ListView Cells it it's Evil

Ich habe eine benutzerdefinierte ListView-Zelle und eine HBox mit zwei Steuerelementen:

Beschriftung mit NamensfeldEs muss aus dem Kontext des Objekts generiert werden

Zum Beispiel setze ich ListView Items Array von Class Fields, wenn der Feldtyp Boolean ist, erstelle ich CheckBox, wenn String ist, erstelle ich TextField und so weiter

Problem ist: ich bekomme Field Objekt nur in der Methode updateItem () - und nur dort kann ich meine Controls erstellen.

In JavaFX 7 funktioniert alles einwandfrei, aber in Java 8 sehe ich meine Steuerelemente nicht.

Gibt es einen richtigen Weg, um meinen Fall zu lösen?

UPDATE 1

Hier vollständiges Beispiel für ein Replikationsproblem:

package javafx8listviewexample;

import java.lang.reflect.Field;
import java.net.URL;
import java.util.Date;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.DatePicker;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.TextFieldListCell;
import javafx.util.Callback;

/**
 *
 * @author dmitrynelepov
 */
public class FXMLDocumentController implements Initializable {

    static class TestClassForListView {

        public String fieldString;
        public Date fieldDate;
    }

    static class MyListCell extends ListCell<Field> {

        /**
         * As in tutorial
         *
         * @param t
         * @param bln
         */
        @Override
        protected void updateItem(Field t, boolean bln) {
            super.updateItem(t, bln);
            if (t != null) {
                if (t.getType().equals(String.class)) {
                    System.out.println("Draw string");
                    setGraphic(new TextField(t.getName()));
                } else if (t.getType().equals(Date.class)) {
                    System.out.println("Draw Date");
                    setGraphic(new DatePicker());

                }
            }
        }

    }

    @FXML
    private ListView<Field> listView;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        this.listView.getItems().clear();
        this.listView.setItems(
                FXCollections.observableArrayList(
                        TestClassForListView.class.getFields()
                )
        );
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        this.listView.setCellFactory(new Callback<ListView<Field>, ListCell<Field>>() {

            @Override
            public ListCell<Field> call(ListView<Field> p) {
                return new MyListCell();
            }
        });

    }

}

Hier Screenshot des Programms JDK 7

Wie Sie sehen können, kann TextField fokussiert und bearbeitet werden.

Aber wenn ich dieses Beispiel mit JDK 8 laufen lasse, habe ich

Wie Sie hier sehen können, kann TextField nicht fokussiert und bearbeitet werden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage