एक ऑब्जर्वेबल लिस्ट ओबलिस्ट में एक श्रोता होता है, इसके अलावा यह ट्री व्यू को अपडेट करता है। जैसे ही नई स्ट्रिंग "संगीत" को ओबलिस्ट में जोड़ा जाता है, नया आइटम बनाया जाता है और ट्री व्यू में डाल दिया जाता है। आइटम अपेक्षित "संगीत" के बजाय "{ [संगीत] 0 } पर जोड़ा गया" के रूप में प्रस्तुत करता है।
TreeItem<String> root = new TreeItem();
root.setExpanded(true);
TreeView<String> treeView = new TreeView(root);
treeView.getChildren().add(new TreeItem<String>("cat")); // normal behaviour
obList = FXCollections.observableArrayList();
obList.addListener(new ListChangeListener<String>() {
@Override
public void onChanged(ListChangeListener.Change<? extends String> c) {
while (c.next()) {
if (c.wasAdded()) {
TreeItem<String> temp = new TreeItem(c);
tree.getRoot().getChildren().add(temp);
}
}
});
obList.add("music");
ऐसा लगता है कि चर c में स्ट्रिंग और अतिरिक्त जानकारी है। क्या हो रहा है और मुझे क्या करना चाहिए?
2 जवाब
यदि आपने कच्चे प्रकार का उपयोग नहीं किया है, तो संकलक ने इस मुद्दे के बारे में शिकायत की होगी।
आप निम्न पंक्ति में String
के बजाय ListChangeListener.Change
ऑब्जेक्ट के लिए मान सेट करते हैं। दाहिने हाथ की ओर कच्चे प्रकार का उपयोग करने से उस प्रकार की जाँच को हटा दिया जाता है जिसके परिणामस्वरूप संकलन समय त्रुटि होती।
TreeItem<String> temp = new TreeItem(c);
इसके बजाय जोड़े गए आइटम की सूची के माध्यम से पुनरावृति करें और उन सभी के लिए एक TreeItem
जोड़ें:
while (c.next()) {
if (c.wasAdded()) {
for (String element : c.getAddedSubList()) {
TreeItem<String> temp = new TreeItem<>(element);
tree.getRoot().getChildren().add(temp);
}
}
}
ठीक है, मैंने इसे इसके साथ तय किया:
obList.getAddedSubList().forEach(l ->
TreeItem<String> temp = new TreeItem(l);
tree.getRoot().getChildren().add(temp);
});
संबंधित सवाल
नए सवाल
javafx
JavaFX प्लेटफ़ॉर्म डेवलपर्स को ग्राफ़िकल यूज़र इंटरफ़ेस (GUI) एप्लिकेशन बनाने और तैनात करने में सक्षम बनाता है जो कई प्लेटफार्मों में लगातार व्यवहार करते हैं। जावाएफ़एक्स 1.3 और उससे अधिक पुरानी भाषाएं स्क्रिप्टिंग थीं, जबकि जावाएफ़एक्स 2.x + / 8.x उपयोगकर्ताओं को जावा का उपयोग करने में सक्षम बनाता है। एफएक्सएमएल, एमएफएक्स को एमवीसी वास्तुकला का पालन करने में सक्षम बनाता है।