Ich habe mich in einer Ecke mit einer CheckBoxTreeItem
gesichert, weil ich die Funktionalität es (die Möglichkeit, alle Kinder überprüft, ob Eltern aktiviert ist), aber meine Eltern hat eine Hyperlink
als die Grafik, während meine Kinder Strings
als ihre Grafik haben. Java mag es nicht, wenn Sie eine TreeView
haben, die zwei verschiedene Typen enthält (CheckBoxTreeItem<Hyperlink>
und CheckBoxTreeItem<String>
). Meine Optionen bestehen darin, eine TreeView
zu erstellen, die einen generischen Typ akzeptiert oder eine Möglichkeit findet, Hyperlinks
als Nur-Text anzuzeigen. Ich habe ein paar Stunden mit der generischen Typ-Option gebastelt, aber ich kann es nicht funktionieren lassen. Ich bin eher geneigt, Hyperlinks zu modifizieren, aber ich werde für jeden Rat dankbar sein.TreeView mit verschiedenen Typen
0
A
Antwort
0
Wenn Sie einen Node
-Typ hinzufügen möchten, können Sie die graphic
-Eigenschaft von verwenden.
@Override
public void start(Stage primaryStage) {
CheckBoxTreeItem<String> item = new CheckBoxTreeItem<>(null, new Hyperlink("abc"));
CheckBoxTreeItem<String> item2 = new CheckBoxTreeItem<>("Hello World");
CheckBoxTreeItem<String> item3 = new CheckBoxTreeItem<>("42");
item.getChildren().setAll(item2, item3);
TreeView<String> treeView = new TreeView<>(item);
treeView.setCellFactory(CheckBoxTreeCell.forTreeView());
Scene scene = new Scene(treeView);
primaryStage.setScene(scene);
primaryStage.show();
}
Alternativ, wenn der TreeItem
Wert der Node
enthält, müssen Sie die updateItem
Methode der CheckBoxTreeCell
ein wenig ändern:
CheckBoxTreeItem<Object> item = new CheckBoxTreeItem<>(new Hyperlink("abc"));
CheckBoxTreeItem<Object> item2 = new CheckBoxTreeItem<>("Hello World");
CheckBoxTreeItem<Object> item3 = new CheckBoxTreeItem<>("42");
CheckBoxTreeItem<Object> item4 = new CheckBoxTreeItem<>(new Hyperlink("def"));
item.getChildren().setAll(item2, item3, item4);
TreeView<Object> treeView = new TreeView<>(item);
treeView.setCellFactory(tv -> new CheckBoxTreeCell<Object>() {
private final HBox graphicWrapper = new HBox();
{
graphicWrapper.setAlignment(Pos.BASELINE_LEFT);
}
@Override
public void updateItem(Object item, boolean empty) {
graphicWrapper.getChildren().clear();
super.updateItem(item, empty);
if (!empty && (item instanceof Node)) {
// replace graphic & text
setText(null);
graphicWrapper.getChildren().setAll(getGraphic(), (Node) item);
setGraphic(graphicWrapper);
}
}
});
Verwandte Themen
- 1. Recyclerview mit verschiedenen Typen
- 2. Tupel mit verschiedenen Typen
- 3. Operator Überladung mit verschiedenen Typen
- 4. Definiere zweidimensionales dynamisches Array mit verschiedenen Typen
- 5. gleicher Elementname mit verschiedenen komplexen Typen
- 6. C++ Symmetrische binäre Operatoren mit verschiedenen Typen
- 7. typescript multidimensionales Array mit verschiedenen Typen
- 8. Model Post mit verschiedenen Typen in Rails
- 9. Haskell Eq zwischen verschiedenen Typen
- 10. Sammlung von verschiedenen generischen Typen
- 11. Unterschied zwischen verschiedenen Integer-Typen
- 12. Unterschiede zwischen verschiedenen Bool-Typen?
- 13. Unterschied zwischen verschiedenen SQL-Typen?
- 14. Serialize/Deserialize Karten mit verschiedenen Typen mit Jackson
- 15. Unterschied von zwei Liste mit verschiedenen Typen mit LINQ
- 16. xsd - Mehrere Elemente mit dem gleichen Namen mit verschiedenen Typen
- 17. Validierung von verschiedenen Typen auf verschiedenen Tasten klicken
- 18. Sortierung der verschiedenen Typen in C# Liste
- 19. Speichert memcpy Daten zwischen verschiedenen Typen?
- 20. variabel große Eingänge von verschiedenen Typen
- 21. Wozu dienen die verschiedenen HLSL-Sampler-Typen?
- 22. LINQ Kreuzung von zwei verschiedenen Typen
- 23. Merging zwei ähnliche Strukturen verschiedenen Typen
- 24. C++ Reihe von verschiedenen Typen Allgemeiner
- 25. std :: min std :: Chrono :: Dauer verschiedenen Typen
- 26. WinForms Designer Eigenschaften verschiedenen Typen abgeleitet
- 27. Coerce-Typen in verschiedenen Namespaces mit identischem Layout in C#
- 28. So machen Sie die Methode wiederverwendbar mit verschiedenen Typen
- 29. Wie RecyclerView Elemente mit verschiedenen Typen zu sortieren?
- 30. Effizienteste Datenstruktur für Arrays mit 2 verschiedenen Typen
mit Methode Nummer eins ging. Lief wie am Schnürchen. Stellen Sie sicher, dass für die Leser die setCellFactory-Zeile enthalten ist. Ansonsten erhalten Sie eine TreeView von nur Strings, keine CheckBoxen. – mpowell48