/ जावाएफएक्स में एक मौजूदा नोड में ट्रीइटेम को ढूंढें और जोड़ें - जावा, जेवाफ, ट्रीव्यू

JavaFX - जावा, जावाफैक्स, ट्रीव्यूव में मौजूदा नोड में TreeItem ढूंढें और जोड़ें

मैं अपने ट्री व्यू को पॉप्युलेट करने की कोशिश कर रहा हूंट्रीहाइम्स, एक हाशपैप से। कुछ डेटा विशेषता "isProject" को ले जाते हैं, जिसका अर्थ है "यह एक निश्चित क्लाइंट का प्रोजेक्ट है। मैं इन प्रोजेक्ट नोड्स को उच्च क्लाइंट नोड्स में जोड़ने का प्रयास कर रहा हूं ... लेकिन इसके बजाय एक भयानक फीडबैक लूप बनाएं। एक विशिष्ट नोड (TreeItem) प्राप्त करें और इसमें एक और जोड़ें? या इस कोड को बनाने का एक तरीका? धन्यवाद।

@SuppressWarnings({ "rawtypes", "unchecked" })
private void showTimeRecords() {
ArrayList<TimeRecord> timeRecords = new ArrayList<>();
ObservableList<PerformanceLogTableData> pflData = FXCollections.observableArrayList();
TimeDataRecords rootValue = new TimeDataRecords("Client / Project", "", "", false, timeRecords, pflData);

YearMonth setYM = YearMonth.of(2016, currMonth);
root = new TreeItem<TimeDataRecords>();

HashMap<String,TimeDataRecords> timeDataRecsMap = timeDataRecsBigMap.get(setYM);

for (HashMap.Entry<String, TimeDataRecords> entry : timeDataRecsMap.entrySet()) {
TreeItem<TimeDataRecords> node = new TreeItem<TimeDataRecords>(entry.getValue());

if (entry.getValue().isProject()) {
for (int i = 0; i < root.getChildren().size(); i++) {
if(root.getChildren().get(i).getValue().getName().equals(entry.getValue().getName())){
TreeItem<TimeDataRecords> tempNode = new TreeItem<TimeDataRecords>(root.getChildren().get(i).getValue());
tempNode.getChildren().add(node);
root.getChildren().add(tempNode);
}
}

}else{
root.getChildren().add(node);
System.out.println(entry.getValue().getId() + " --- " + entry.getValue().getProject() + " --- " + entry.getValue().isProject());
}
}
root.setValue(rootValue);
root.setExpanded(true);
treeView.setRoot(root);
treeView.setEditable(false);
}

उत्तर:

जवाब के लिए 0 № 1

पहले लिंक्डलिस्ट में प्रोजेक्ट डेटा को प्रस्तुत करने का प्रयास करें।

LinkedList<TreeItem<TimeDataRecords>> entrys = new LinkedList<>();

for(TimeDataRecords entry : timeDataRecsMap.values()){
TreeItem<TimeDataRecords> node = new TreeItem<TimeDataRecords>(entry);

if(entry.isProject()) entrys.addFirst(node);
else entrys.addLast(node);
}

root.getChildren().addAll(entrys);