2010-05-18 17 views
5

मुझे JList और JComboBox से अवगत है। JList प्रदान करता है कि कई चयन कार्यक्षमता के साथ मुझे कॉम्बो बॉक्स ड्रॉप डाउन कार्यक्षमता की आवश्यकता है।एकाधिक आइटम चयन के साथ जावा स्विंग में ड्रॉप-डाउन सूची कैसे बनाएं?

ऐसा इसलिए है क्योंकि सूची की सामग्री एक साधारण सूची का उपयोग करके प्रदर्शित होने के लिए बहुत बड़ी है। मुझे कई आइटम चुनने की भी आवश्यकता है, अन्यथा मैं JComboBox के साथ संतुष्ट होता।

कोई सुझाव?

उत्तर

7

बहु-चयन का उपयोग करते समय, कॉम्बो बॉक्स की तुलना में सूची का उपयोग करना बेहतर होता है। चूंकि जीयूआई रूपक जाते हैं, लोग उम्मीद करते हैं कि एक कॉम्बो बॉक्स एकल चयन होगा, जबकि सूचियां भी हो सकती हैं।

सूची की सामग्री भी बड़ा एक JScrollPane में एक सरल सूची

प्लेस JList का उपयोग कर प्रदर्शित करने के लिए कर रहे हैं। JList पर आप setVisibleRowCount(int) पर कॉल कर सकते हैं यह निर्दिष्ट करने के लिए कि एक समय में कितनी पंक्तियां दिखानी चाहिए।

3

आप combobox के लिए एक कस्टम सेल रेंडरर बना सकते हैं और उन घटकों में चेकबॉक्स जोड़ सकते हैं, ताकि आप उन्हें चेक और अनचेक कर सकें। आप कुछ इस तरह करना है: अपने डेटा एक पदानुक्रमित चरित्र है

public class MyComboBoxRenderer implements ListCellRenderer { 

    private String[] items; 
    private boolean[] selected; 

    public MyComboBoxRenderer(String[] items){ 
     this.items = items; 
     this.selected = new boolean[items.lenght]; 
    } 

    public Component getListCellRendererComponent(JTable table, Object value, 
      boolean isSelected, boolean hasFocus, int index) { 
     // Create here a JLabel with the text 
     // Create here a JCheckBox 
     // Add them to a layoutmanager 
     return this; 
    } 

    public void setSelected(int i, boolean flag) 
    { 
     this.selected[i] = flag; 
    } 

} 
+0

इस वर्ग जरूरी आदेश वापसी प्रकार बनाने के लिए 'Component' के कुछ उप-प्रकारों फैली 'getListCellRendererComponent() 'मिलान, यदि आप इसे वापस करना चाहते हैं;'। यदि आप अपने द्वारा बनाए गए लेबल को वापस करना चाहते हैं, तो यह मूल है (इसलिए मुझे वास्तव में यह नहीं मिलता है)। और यह कहां से सेट किया गया() 'से आया है? सभी कोड पोस्ट करने के लिए सर्वश्रेष्ठ। – FaithReaper

0

वर्णित कार्यक्षमता प्राप्त करने के लिए, मैंने अंततः JMenuBar को "दुरुपयोग" करने का निर्णय लिया और इसमें कई JCheckBoxMenuItems शामिल किया। जीयूआई तब पूरी तरह से उद्देश्य (मेरे लिए कम से कम) फिट बैठता है, यह केवल आइटमइवेंट का संचालन है जो थोड़ा परेशान होने का जोखिम रखता है।

(अंत में, मैं आइटम पर कुछ थोड़ा तर्क परिभाषित है, और फिर अपने आप को घटना का केवल एक प्रकार से निपटने के लिए सीमित कर सकते हैं)

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