Auf Thema antworten

Beispielsweise könnte man es so versuchen:


[code=Java]

public class App extends Application {


    @Override

    public void start(Stage stage) {

        TreeItem<TextField> root = new TreeItem<>(new TextField("Wurzel"));


        Map<TextField, TreeItem<TextField>> tree = new HashMap<>();


        for (int i = 0; i < 10; ++i) {

            TextField tf = new TextField(String.format("Kind %04d", i));

            TreeItem<TextField> item = new TreeItem<>(tf);

            tree.put(tf, item);

            root.getChildren().add(item);

        }


        int i = 0;

        for (var a : root.getChildren()) {

            TextField tf = new TextField(String.format("Enkel %04d", i++));

            TreeItem<TextField> item = new TreeItem<>(tf);

            tree.put(tf, item);

            ((TreeItem<TextField>) a).getChildren().add(item);

        }


        TreeView<TextField> treeView = new TreeView<>(root);

        treeView.setShowRoot(false);


        Button button = new Button("Show");

        button.setOnAction(eh -> {

            TreeItem<TextField> selectedItem = treeView.getSelectionModel().getSelectedItem();

            String text = selectedItem == null ? "Nichts gewählt"

                    : "Text: " + selectedItem.getValue().getText();


            Alert alert = new Alert(INFORMATION);

            alert.setContentText(text);

            alert.showAndWait();

        });


        ScrollPane scrollable = new ScrollPane(treeView);

        VBox content = new VBox(scrollable, button);


        var scene = new Scene(content, 640, 480);

        scene.focusOwnerProperty().addListener((ov, oldValue, newValue) -> {

            TreeItem<TextField> item = tree.get(newValue);

            if (item != null) {

                treeView.getSelectionModel().select(item);

            }

        });

        stage.setScene(scene);

        stage.show();

    }


    public static void main(String[] args) {

        launch();

    }


}

[/code]



Oben