Ich habe eine Tabelle auf der Datenbank (Code, Compostant, Eltern), wo jeder Knoten ein Elternteil hat (ein Elternteil ist auch ein Komponentencode), muss ich einen TreeView dynamisch von einem Selectfülle javaFX treeView von der Datenbank dynamisch
füllen@FXML
private TreeView tree;//declaration of the treeView
HashMap<Integer, composant> node = new HashMap<>(); //for child nodes
HashMap<Integer, composant> pere = new HashMap<>(); //for parent nodes
composant c; //object from component class
private void fillTree(String idSys) {
String query = "SELECT * FROM composant WHERE id=?";
try {
ps = cnx.prepareStatement(query);
ps.setString(1, idSys);
rs = ps.executeQuery();
while (rs.next()) {
int code = rs.getInt("code");
String composant = rs.getString("composant");
int parent = rs.getInt("parent");
String niveau = rs.getString("niveau");
int id = rs.getInt("id");
c = new composant(code, composant, niveau, parent, id);
node.put(code, c);
pere.put(parent, c);
}
ps.close();
rs.close();
} catch (Exception e) {
System.err.println("Error" + e);
}
TreeItem<String> system = new TreeItem<>(sys);
//brows and fill parents node
for (Integer k : pere.keySet()) {
composant p = pere.get(k);
TreeItem<String> parent = new TreeItem<>();
parent.setValue(p.getComposant());
//brows and fill child hashmap
for (Integer i : node.keySet()) {
composant c = node.get(i);
TreeItem<String> noeud = new TreeItem<>();
noeud.setValue(c.getComposant());
if (c.getParent() == k) {
//if the parent = 1 it must attach to the root node
if (k == 1) {
system.getChildren().add(noeud);
} else {
parent.getChildren().add(noeud);
}
}
}
}
tree.setRoot(system);
}
wenn nichts erscheint auf dem Fenster Kompilierung das ist, was ich
Ich bin nicht sicher, ob der Algorithmus zum Erstellen der Baumstruktur korrekt ist, aber wenn * nichts * in der GUI angezeigt wird, ist etwas falsch, dass Sie nicht gebucht haben. (Zumindest sollten Sie Ihren Wurzelknoten sehen.) Ich empfehle Ihnen, ein [MCVE] zu erstellen; Anstatt auf eine Datenbank zuzugreifen, codieren Sie ein paar "Composant" -Instanzen und fügen Sie sie in die Karten ein. Sie sollten das in einer ziemlich kleinen Anzahl von Codezeilen tun können. Wenn das nicht funktioniert, können Sie das vollständige Beispiel in Ihrer Frage veröffentlichen; Wenn dies der Fall ist, können Sie eingrenzen, wo das Problem liegt. –