2014-10-04 13 views
18

बनाना मैं जावाएफएक्स 8 में एक चॉइसबॉक्स बनाने की कोशिश कर रहा हूं, जिसके लिए एक संग्रह की आवश्यकता है। मैं समझ नहीं एक संग्रह बनाने के लिए कैसे हालांकि ... अगर मैं कोशिश:एक अवलोकन सूची/संग्रह

ObservableList<String> list = new ObservableList<String>(); 

मैं कह रहा ObservableList का दृष्टांत नहीं कर सकते क्योंकि यह सार है कोई त्रुटि मिलती है। समझा जा सकता। अगर मैं ObservableList के लिए दस्तावेज़ देख मैं देख सकता हूँ कि SortedList लागू करता ObservableList, लेकिन मैं ऐसा नहीं कर सकते:

ObservableList<String> list = new SortedList<String>(); 

क्योंकि कोई लागू कंस्ट्रक्टर्स। जाहिर है, मुझे सॉर्टेडलिस्ट को पास करने के लिए एक अवलोकन करने योग्य सूची की आवश्यकता है, जो अजीब है क्योंकि मैं एक पर्यवेक्षण सूची नहीं बना सकता।

constructor SortedList.SortedList(ObservableList<? extends String>,Comparator<? super String>) is not applicable 
    (actual and formal argument lists differ in length) 
constructor SortedList.SortedList(ObservableList<? extends String>) is not applicable 
    (actual and formal argument lists differ in length) 

मुझे यकीन नहीं है कि इसे कैसे समझें। अगर मैं

ObservableList<String> list = new SortedList<SortedList<String>>(); 
//or 
ObservableList<String> list = new SortedList<ObservableList<String>>(); 

निराशा से बाहर, मुझे एक और अधिक गड़बड़ त्रुटि मिलती है।

SortedList<String> list = new SortedList<String>(); 

या तो काम नहीं करता है। या तो

ObservableList<string> list = new FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip"); 

लेकिन कोई किस्मत: किसी भी तरह इस काम करता है (लेकिन जाहिरा तौर पर एक असुरक्षित आपरेशन का उपयोग करता है):

ChoiceBox box = new ChoiceBox(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip")); 

तो मैं कोशिश की। मैं बहुत उलझन में हूं, इसे समझने की कोशिश करने के अंतहीन लूप में एक ही थिंक कर रहा हूं। मैंने जो दस्तावेज पाया है वह उन उदाहरणों को दिखाता है जो मदद नहीं करते हैं, या कोई उदाहरण नहीं। आधिकारिक दस्तावेज भी बेकार है:

"मान लीजिए कि आपके पास एक संग्रह सी है, जो एक सूची, एक सेट, या किसी अन्य प्रकार का संग्रह हो सकता है। यह मुहावरा एक नया ऐरेलिस्ट बनाता है (एक कार्यान्वयन सूची इंटरफेस), शुरू में ग में सभी तत्वों से युक्त।

List<String> list = new ArrayList<String>(c); 

" तो ArrayList, सूची के एक कार्यान्वयन बनाने के लिए, मैं एक सूची की आवश्यकता है। पहली बार प्रलेखन में जाने का कारण यह था कि वे क्या सोच रहे हैं कि उन्हें क्या बनाना है। मैं हार गया हूं। मदद?

उत्तर

29

उपयोग FXCollections में कारखाने तरीके:

ObservableList<String> list = FXCollections.observableArrayList(); 

अपनी पसंद बॉक्स निर्माता में असुरक्षित आपरेशन क्योंकि आप पसंद बॉक्स के लिए प्रकार निर्दिष्ट नहीं किया है है:

ChoiceBox<String> box = new ChoiceBox<>(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip")); 

और त्रुटि SortedList से है क्योंकि कोई कन्स्ट्रक्टर कोई तर्क नहीं ले रहा है। (फिर, javadocs देखें।) दो रचनाकार हैं: सबसे सरल व्यक्ति ObservableList का संदर्भ लेता है (जिस सूची के लिए क्रमबद्ध सूची क्रमबद्ध दृश्य प्रदान करेगी)। तो तुम

SortedList<String> sortedList = new SortedList<>(list); 

या

SortedList<String> sortedList = new SortedList<>(FXCollections.observableArrayList()); 
+0

की तरह कुछ मैंने सोचा कि मैं observableArrayList की कोशिश की थी, लेकिन जाहिरा तौर पर नहीं की आवश्यकता होगी। धन्यवाद! – LilSweden

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