Guten Morgen zusammen!
Ich brauche mal dringend eure Hilfe:
Es geht um eine TreeView in der ich gerne Strings als Oberbegriffe speichern möchte, als Leafs/Blätter dann aber selbst erstellte Objekte habe.
Ich habe ein kleines Beispiel dazu erstellt, mit dem wir arbeiten können:
Dazu gibt es eine Product-Klasse an der nichts weiter interessant ist:
Wie ihr in der Main seht habe ich 3 Kategorien angelegt, alles normale Strings.
Und möchte jetzt in den Kategorien gerne Products speichern.
Im Prinzip ist das, was ich machen möchte jetzt eine createLeafs - Funktion (siehe auskommentierter Code).
Welche Möglichkeiten habe ich, so etwas zu machen ?
Nach einem ganzen Tag googlen und ausprobieren habe ich gestern eigentlich nur die Lösung Treecellfactory gefunden. Nur weiss ich beim besten Willen nicht, was ich in die Factory jetzt für einen Code reinschreiben muss, damit ich Produkte als Leafs speichern kann...
Gibt es evtl. noch eine einfachere Lösung ?
Wenn es die nicht gibt dann brauch ich bitte Hilfe bei der Factory.
P.s.: Ja, ich hab mir das Oracle-Beispiel angesehen, habe es aber nicht wirklich verstanden.
mfG
Ich brauche mal dringend eure Hilfe:
Es geht um eine TreeView in der ich gerne Strings als Oberbegriffe speichern möchte, als Leafs/Blätter dann aber selbst erstellte Objekte habe.
Ich habe ein kleines Beispiel dazu erstellt, mit dem wir arbeiten können:
Java:
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.util.Callback;
import javafx.scene.Scene;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.StackPane;
public class Main extends Application {
private TreeView<String> tree;
private TreeItem<String> treeroot;
private Product p1;
@Override
public void start(Stage primaryStage) {
try {
StackPane root = new StackPane();
//Tree-root
treeroot = new TreeItem<>();
treeroot.setExpanded(true);
//Create tree
tree = new TreeView<>();
tree.setRoot(treeroot);
tree.setShowRoot(false);
TreeItem<String> kat1,kat2,kat3;
kat1 = createNode("Kategorie 1", treeroot);
kat2 = createNode("Kategorie 2", treeroot);
kat3 = createNode("Kategorie 3", treeroot);
p1 = new Product("Bleistift",0.80,20);
//createLeaf(p1,kat1);
// tree.setCellFactory(new Callback<TreeView<String>, TreeCell<String>>() {
//
// @Override
// public TreeCell<String> call(TreeView<String> param) {
// // TODO Auto-generated method stub
// return null;
// }
// });
root.getChildren().add(tree);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
// private TreeItem<Product> createLeaf(Product p, TreeItem<String> parent) {
// TreeItem<Product> node = new TreeItem<>(p.getName());
// node.setExpanded(false);
// parent.getChildren().add(node);
// return node;
// }
public TreeItem<String> createNode(String titel, TreeItem<String> parent)
{
TreeItem<String> node = new TreeItem<>(titel);
node.setExpanded(false);
parent.getChildren().add(node);
return node;
}
public static void main(String[] args) {
launch(args);
}
}
Dazu gibt es eine Product-Klasse an der nichts weiter interessant ist:
Java:
package application;
public class Product {
private String name;
private double preis;
private int anzahl;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPreis() {
return preis;
}
public void setPreis(double preis) {
this.preis = preis;
}
public int getAnzahl() {
return anzahl;
}
public void setAnzahl(int anzahl) {
this.anzahl = anzahl;
}
public Product(String name, double preis, int anzahl) {
this.name = name;
this.preis = preis;
this.anzahl = anzahl;
}
}
Wie ihr in der Main seht habe ich 3 Kategorien angelegt, alles normale Strings.
Und möchte jetzt in den Kategorien gerne Products speichern.
Im Prinzip ist das, was ich machen möchte jetzt eine createLeafs - Funktion (siehe auskommentierter Code).
Welche Möglichkeiten habe ich, so etwas zu machen ?
Nach einem ganzen Tag googlen und ausprobieren habe ich gestern eigentlich nur die Lösung Treecellfactory gefunden. Nur weiss ich beim besten Willen nicht, was ich in die Factory jetzt für einen Code reinschreiben muss, damit ich Produkte als Leafs speichern kann...
Gibt es evtl. noch eine einfachere Lösung ?
Wenn es die nicht gibt dann brauch ich bitte Hilfe bei der Factory.
P.s.: Ja, ich hab mir das Oracle-Beispiel angesehen, habe es aber nicht wirklich verstanden.
mfG