JavaFX: Auswahlknopf + CheckBox TreeView

in Verweis auf meine frühere FrageHie, Ich habe den folgenden Code eingegeben.

Ich versuche, eine Baumansicht zu erstellen, in der ein Optionsfeld für Blätter und Kontrollkästchen für Nicht-Blatt-Elemente angezeigt werden. Der folgende Code zeigt nichts. Ich bin sicher, dass ich irgendwo (oder überall) etwas extrem Falsches mache. Jede Hilfe wird sehr geschätzt. Vielen Dan

public class RadioCheckBoxTreeView extends TreeView {

public RadioCheckBoxTreeView() {

    setCellFactory(new Callback<TreeView<Object>, TreeCell<Object>>() {

        @Override
        public TreeCell<Object> call(TreeView<Object> param) {
            return new RadioCheckBoxCellImpl();
        }
    });
}

private static class RadioCheckBoxCellImpl extends TreeCell<Object> {

    private final CheckBox check = new CheckBox();
    private final RadioButton radio = new RadioButton();
    private Property<Boolean> prevRadioProp;

    public RadioCheckBoxCellImpl() {
    }

    {
        setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
    }

    @Override
    public void updateItem(Object item, boolean empty) {
        if (prevRadioProp != null) {
            radio.selectedProperty().unbindBidirectional(prevRadioProp);
            prevRadioProp = null;
        }
        check.selectedProperty().unbind();

        if (!empty && item != null) {
            Property<Boolean> selectedProp = prevRadioProp;

            if (getTreeItem().isLeaf()) // display radio button
            {
                radio.setText("radio");
                radio.selectedProperty().bindBidirectional(selectedProp);
                prevRadioProp = selectedProp;
                setGraphic(radio);
            } else // display checkbox
            {
                check.setText("check");
                check.selectedProperty().bind(selectedProp);
                setGraphic(check);
            }
        } else {
            setGraphic(null);
            setText(null);
        }
    }

   }

So sieht meine Startmethode aus

public void start(Stage primaryStage) {


    AnchorPane pane = new AnchorPane();
    Scene scene = new Scene(pane);

    MyTreeView tv = new MyTreeView();
    tv.setRoot(new TreeItem());

    TreeItem child1 = new TreeItem();
    child1.setValue("1");

    TreeItem child2 = new TreeItem();
    child2.setValue("2");
    TreeItem child3 = new TreeItem();
    child3.setValue("3");

    tv.getRoot().getChildren().add(child1);
    tv.getRoot().getChildren().add(child2);
    child2.getChildren().add(child3);

    pane.getChildren().add(tv);
    primaryStage.setScene(scene);
    primaryStage.show();
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage