2013-04-25 2 views
5

के तत्वों को जोड़ने मैं वस्तुओं है कि, ग्राहकों के नाम शामिल इस तरह की एक सरणी है: Customers[]एक JList

कैसे मैं अपने आप के बाद मैं एक बटन दबाएँ एक मौजूदा JList के उन तत्वों को जोड़ सकते हैं? मैंने इस तरह कुछ करने की कोशिश की है:

for (int i=0;i<Customers.length;i++) 
{ 
    jList1.add(Customers[i].getName()); 
} 

लेकिन मुझे हमेशा एक गलती मिलती है। मैं इसे कैसे हल कर सकता हूं? मैं नेटबीन पर काम कर रहा हूं। त्रुटि है कि प्रतीत होता है "उपयुक्त विधि (स्ट्रिंग)। जोड़ने के लिए नहीं मिला जिस तरह से मेरी विधि getName एक स्ट्रिंग में ग्राहक का नाम लौटने तक है।

+1

आपको किस प्रकार की त्रुटि मिल रही है? साथ ही, अधिक कोड आपके प्रश्न को समझने में आसान बना देगा। – Abbas

+0

कुछ जोड़ने के लिए गलत सूची की तरह बदबू आ रही है! – skuntsel

+1

[सूची का उपयोग कैसे करें] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html) – Howard

उत्तर

1

ListModel के बजाय JList को सीधे जोड़ें । खुद वर्तमान में आप add विधि है जो सूची की सामग्री को प्रभावित नहीं करता उपयोग कर रहे हैं DefaultListModel परिवर्तनशील है तो रनटाइम पर अद्यतन किया जा सकता

की घोषणा:।।

JList<String> jList1 = new JList<String>(new DefaultListModel<String>()); 

जोड़ना:

((DefaultListModel)jList1.getModel()).addElement(Customers[i].getName()); 
7

add विधि का प्रयोग कर रहे Container#add विधि है, तो निश्चित रूप से आप क्या करने की जरूरत नहीं है। आपको ListModel को बदलने की आवश्यकता है, उदा।

DefaultListModel<String> model = new DefaultListModel<>(); 
JList<String> list = new JList<>(model); 

for (int i = 0; i < customers.length; i++){ 
    model.addElement(customers[i].getName()); 
} 

संपादित करें:

मैं मॉडल के लिए सीधे नाम जोड़ने की कोड का टुकड़ा निकाला जाता है। यह एक कस्टम रेंडरर की आवश्यकता से बचाता है

+0

यह मॉडल नहीं होना चाहिए .addElement (ग्राहक [i] .getNmae()); '? –

+0

@AdegokeA मैं सीधे मॉडल में डेटा तत्व जोड़ना पसंद करता हूं, और प्रस्तुतकर्ता में निर्णय लेता हूं कि मैं किस प्रकार की संपत्तियां दिखाना चाहता हूं। लेकिन हां, अगर मैं इस सवाल में कोड से अधिक बारीकी से मिलान करना चाहता हूं तो मुझे नाम जोड़ने और '' को '' सूची और मॉडल परिभाषा – Robin

+0

@Robin में बदलने की आवश्यकता नहीं है यह? मेरा मतलब उपयोगकर्ता के लिए अधिक पारदर्शी है। मुझे अन्य भाषाओं में याद रखना सूची में रखना जितना आसान था .additem() – Little

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