Ich habe einen Knoten mit mehreren Kindern und möchte den Kollaps/Expansionspfeil beibehalten, der das Standardsymbol des Knotens ist, aber ich habe eine andere Grafik, die ich würde gerne direkt neben den Pfeil legen. Ermöglicht die JavaFX-Baumansicht eine Möglichkeit dies zu tun?JavaFX Treeview - Wie erstelle ich einen Elternknoten mit "zwei" Grafiken
0
A
Antwort
0
Entweder geben Sie einfach die Grafik der TreeItem
:
TreeItem<String> root = new TreeItem<>("Root", new Rectangle(16, 16, Color.CORAL));
etc,
oder eine Zellfabrik verwenden:
TreeView<String> tree = new TreeView<>();
tree.setCellFactory(tv -> new TreeCell<String>() {
private final Node graphic = new Rectangle(16, 16, Color.CORAL);
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setGraphic(empty ? null : graphic);
setText(empty ? null : item);
}
});
Beachten Sie, dass für große Bäume, die zweite Technik hat die Potenzial, um viel effizienter zu sein, da es nur Grafiken (zwei Knoten in diesem Fall) für jede Zelle erstellt, während die Die erste Technik erstellt Grafiken für jede Element in der Struktur (ob es angezeigt wird oder nicht). Argumentiert (ich würde stark argumentieren), die zweite Technik hat eine bessere Trennung von Bedenken (in der ersten Lösung ist die Grafik Teil der Daten, die einfach nur falsch ist).
SSCCE für die erste Technik:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class TreeGraphicTest extends Application {
@Override
public void start(Stage primaryStage) {
TreeItem<String> root = new TreeItem<>("Root", new Rectangle(16, 16, Color.CORAL));
for (int i = 1 ; i <= 3 ; i++) {
root.getChildren().add(new TreeItem<>("Child "+i, new Rectangle(16, 16, Color.CORNFLOWERBLUE)));
}
TreeView<String> tree = new TreeView<>(root);
primaryStage.setScene(new Scene(tree));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
SSCCE für die zweite Technik:
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class TreeGraphicTest extends Application {
@Override
public void start(Stage primaryStage) {
TreeItem<String> root = new TreeItem<>("Root");
for (int i = 1 ; i <= 3 ; i++) {
root.getChildren().add(new TreeItem<>("Child "+i));
}
TreeView<String> tree = new TreeView<>(root);
tree.setCellFactory(tv -> new TreeCell<String>() {
private final Node rootGraphic = new Rectangle(16, 16, Color.CORAL) ;
private final Node childGraphic = new Rectangle(16, 16, Color.CORNFLOWERBLUE) ;
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setGraphic(empty ? null : getTreeItem() == root ? rootGraphic : childGraphic);
setText(empty ? null : item);
}
});
primaryStage.setScene(new Scene(tree));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Screenshot (entweder):
Verwandte Themen
- 1. Wie erstelle ich einen JavaFX-Dialog?
- 2. Wie erstelle ich ein CheckBoxTreeItem in JavaFX mit FXML
- 3. JavaFx Quell-Elternknoten mit spezifischer ID finden?
- 4. So verwenden Sie JavaFx TreeView mit POJO
- 5. JavaFX TreeView Verzeichnisliste
- 6. Wie erstelle ich einen Farbverlauf ohne Javafx/AWT?
- 7. JavaFX TreeView bearbeiten Artikel
- 8. JavaFX TreeView ist leer
- 9. Wie erstelle ich einen schrägen mittleren Rand mit zwei Tabs
- 10. Wie erstelle ich ArreyList in JavaFX?
- 11. JavaFX TreeView Scroll-Fensterbereich entfernen
- 12. bearbeiten Artikel in JavaFX TreeView
- 13. JavaFX: bindContent von TreeView selectedItems
- 14. JavaFX TreeView CellFactory Styling Fehler
- 15. Wie erstelle ich eine Form mit zwei Kreisen?
- 16. Wie Elternknoten mit XQuery abrufen?
- 17. Warum benötigt removeChild einen Elternknoten?
- 18. Wie erstelle ich einen Timer mit tkinter?
- 19. Wie erstelle ich einen Bogen mit Slick2D?
- 20. Wie erstelle ich einen Kreis mit CALayer?
- 21. Wie erstelle ich einen Ersetzungsvorgang mit sequelize.js?
- 22. Wie erstelle ich einen Textknoten mit lxml?
- 23. Wie erstelle ich einen Helfer mit Block?
- 24. Wie verwende ich XML :: XPath, um einen Elternknoten zu erhalten?
- 25. Wie erstelle ich einen NSManagedObjectContext
- 26. Wie erstelle ich einen Timer
- 27. Wie erstelle ich einen Zeitplaner?
- 28. Wie kann ich stoppen JavaFX Elternknoten bekommen Klick nach Ziehen zwischen Kindern
- 29. Wie erstelle ich einen Thread?
- 30. Wie erstelle ich einen Metagrammar?