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]