JList

2012-02-22 12 views
8

से चयनित आइटम हटाएं क्या कोई मुझे मेरे JList से चयनित आइटमों को हटाने के लिए एक छोटा रास्ता बता सकता है?JList

मैंने Google और यहां खोज की, लेकिन मुझे बहुत से तरीके मिले। मुझे किस तरह का उपयोग करना चाहिए?

+1

जेएलिस्ट का मॉडल प्राप्त करें (जो संभवतः [डिफ़ॉल्ट सूची मोडेल] (http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html) ऑब्जेक्ट होगा) और चयनित हटाएं मॉडल से आइटम को 'हटाए गए एलिमेंट (ऑब्जेक्ट ओबीजे)' विधि के माध्यम से। –

+3

इस विषय पर मानक जावा [स्विंग ट्यूटोरियल] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#mutable) देखें – DNA

+1

@JoopEggen: यदि मैं डाउन-वोटर नहीं हूं तो मैं नीचे मतदाता हूं यही वह है जो आप पूछ रहे हैं, लेकिन मैं आपसे असहमत हूं कि मुझे लगता है कि एक सरल जवाब है। आपको चयनित ऑब्जेक्ट जेएलआईस्ट (इंडेक्स नहीं) से मिलता है, और यदि शून्य नहीं है तो आप मॉडल की एक निकाली विधि को कॉल करते हैं जो ऑब्जेक्ट लेता है: 'removeElement (obj) '। –

उत्तर

23

जैसा कि @Andreas_D ने कहा, डेटा केंद्रित, अधिक सारणी ListModel समाधान है। यह DefaultListModel हो सकता है। आपको स्पष्ट रूप से जेएलिस्ट में मॉडल सेट करना चाहिए। तो (धन्यवाद @kleopatra द्वारा टिप्पणी करने के लिए):

DefaultListModel model = (DefaultListModel) jlist.getModel(); 
int selectedIndex = jlist.getSelectedIndex(); 
if (selectedIndex != -1) { 
    model.remove(selectedIndex); 
} 

वहाँ DefaultListModel में कई remove... तरीके हैं। वैसे, यह एक अच्छा सवाल है, क्योंकि API (ListModel) में कोई तत्काल समाधान नहीं है।

+1

मुझे इंडेक्स नहीं मिलेगा बल्कि चयनित आइटम स्वयं ही मिलेगा, और फिर मॉडल की निकासी एलीमेंट विधि को कॉल करें जो ऑब्जेक्ट पैरामीटर लेता है। –

+2

सहमत हुए: ListModel सभी व्यू-संग्रह इंटरफ़ेस का सबसे न्यूनतम (न तो परिवर्तनीय और न ही संशोधित) है - लेकिन यह ओपी समस्या नहीं है: वह ट्यूटोरियल अध्याय पढ़ता है (जो वही नमूना दिखाता है जैसा आप यहां करते हैं - शून्य चयनित होने के लिए चेक) सावधान रहें: जेएलिस्ट का डिफ़ॉल्ट मॉडल _not_ डिफ़ॉल्ट डिस्टॉल्ट मॉडल है, आपको इसे स्पष्ट रूप से सेट करना होगा। – kleopatra

3

JList घटक एक सूची मॉडल द्वारा समर्थित है। इसलिए सूची से किसी आइटम को निकालने का एकमात्र अनुशंसित तरीका मॉडल से इसे हटाना है (और दृश्य को रीफ्रेश करें)।

+0

में हैं, यदि वह डिफॉल्टलिस्टमोडेल (और वह सभी संभावनाओं में है), तो दृश्य को रीफ्रेश करने की कोई आवश्यकता नहीं है क्योंकि यह स्वचालित रूप से किया जाना चाहिए। –

+0

यह एक सामान्य प्रश्न का एक कम या कम सामान्य जवाब था। –

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