2015-01-06 12 views
5

बहुत ही सरल कोड:क्यों SortedList.add() UnsupportedOperationException फेंकता है?

import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.collections.transformation.SortedList; 

public final class SortedListTest { 

    public static void main(String[] args) { 
     final ObservableList<Integer> il = FXCollections.observableArrayList(); 
     final SortedList<Integer>  sil = new SortedList<>(il); 
     sil.comparatorProperty().set((l,r)-> l-r); 
     sil.add(12); 
    } 
} 

निष्पादन:

Exception in thread "main" java.lang.UnsupportedOperationException 
    at java.util.AbstractList.add(AbstractList.java:148) 
    at java.util.AbstractList.add(AbstractList.java:108) 
    at SortedListTest.main(SortedListTest.java:13) 

उत्तर

11

एक SortedList उसके अंतर्निहित सूची का एक क्रमबद्ध दृश्य है। अगर आपको क्रमबद्ध सूची में तत्व जोड़ने की अनुमति दी गई तो यह उस रिश्ते को तोड़ देगा। आपको तत्व को अंतर्निहित सूची में जोड़ने की आवश्यकता है:

il.add(12); 
+0

मुझे तालिका दृश्य में क्रमबद्ध सूची देना है और मेरे मॉडल में अंतर्निहित सूची रखना है। विचारों को क्रमबद्ध करते समय मॉडल पर संचालन अंतर्निहित सूची पर किया जाता है। मैं मॉडल में आदेशित बाधा कैसे व्यक्त कर सकता हूं? – Aubin

+0

मुझे पूरी तरह से यकीन नहीं है कि मैं समझता हूं, लेकिन क्या यह मॉडल में 'ऑब्जेक्टप्रॉपर्टी <तुलनाकर्ता >' स्टोर करने के लिए काम करेगा (जहां 'टी' तालिका के लिए डेटा प्रकार है), और (द्विपक्षीय रूप से?) इसे बाध्य करें 'सॉर्टेडलिस्ट' की तुलनित्र संपत्ति? –

+0

यह जावाएफएक्स में शामिल सबसे कमजोर "उपयोगिता" कक्षाओं में से एक होना चाहिए .. यदि यह इस सरल उपयोग मामले में विफल रहता है। मैं कॉम्बो बॉक्स की तरह कुछ लेता हूं, आइटम को सॉर्टेडलिस्ट में सुविधा के लिए सेट करता हूं, और फिर, comboBox.getItems.add (...) में सभी कॉल विफल हो जाएंगे? एक महाकाव्य स्तर पर फेसप्लम .... पृथ्वी पर क्यों वे लिपटे सूची में ऐड कॉल को पास नहीं करते हैं? – user2163960

संबंधित मुद्दे