2012-11-28 16 views
12

मेरे पास गुई में एक जेएलिस्ट है जहां मैं एड बटन के साथ कुछ डेटा जोड़ सकता हूं। जो मैं साफ़ करता हूं उसे एक और बटन जोड़ना चाहता हूं जो सभी तत्वों को साफ़ करेगा।जावा में जेएलिस्ट को कैसे साफ़ करें?

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) 
{ 
    DefaultListModel listmodel=new DefaultListModel(); 
    jList1 = new JList(listmodel); 
    if(evt.getSource()==jButtonClear) JList.setListData(new String[0]; 
    else listmodel.removeAllElements(); 
} 

जब मैं जोड़ें बटन पर क्लिक करें इस तत्वों को जोड़ने जाएगा: मैं इस कोशिश की।

जब मैं साफ़ बटन पर क्लिक करता हूं तो यह तत्व हटा देता है।

लेकिन जोड़ें बटन पर जब मैं फिर से क्लिक करें, वहाँ jList1

उत्तर

18

आपको इससे कुछ आइटम निकालने के लिए पूरे जेएलिस्ट विजेट को पुन: प्रारंभ नहीं करना चाहिए। इसके बजाय आपको सूचियों के मॉडल में हेरफेर करना चाहिए, क्योंकि इसमें परिवर्तन 'स्वचालित रूप से' यूआई पर वापस सिंक्रनाइज़ किए जाते हैं। यह मानते हुए कि आप वास्तव में DefaultListModel उपयोग कर रहे हैं, यह पर्याप्त है अपने 'सभी को साफ़ करें' कार्यक्षमता को लागू करने:

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) { 
    if(evt.getSource()==jButtonClear) { 
     DefaultListModel listModel = (DefaultListModel) jList1.getModel(); 
     listModel.removeAllElements(); 
    } 
} 
7

में कुछ भी नहीं है समस्याओं की संख्या में हैं, पहले किया गया है कि अपने उदाहरण समस्याओं संकलन से भरा हुआ है, इसलिए मुझे आशा है कि अपने वास्तविक कोड नहीं है ।

JList में setListData नामक स्थैतिक विधि नहीं है। मुझे लगता है कि आप इसके बजाय jList1 का मतलब है।

हर बार जब आप साफ बटन पर क्लिक करें, तो आप एक नया मॉडल और घटक ...

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) 
{ 
    // ?? 
    DefaultListModel listmodel=new DefaultListModel(); 
    jList1 = new JList(listmodel); 
    // ?? 
    if(evt.getSource()==jButtonClear) jList1.setListData(new String[0]); 
    else listmodel.removeAllElements(); 
} 

पैदा कर रहे आप सफलतापूर्वक dereferenced गया है जो भी jList1 पर इंगित किया गया था, तो किसी भी समय आप कोशिश करते हैं और बातचीत इसके साथ, आप अब स्क्रीन पर घटक के साथ बातचीत नहीं कर रहे हैं।

दूसरी समस्या आप setListData विधि, जो मूल रूप से कह रही है,

कुछ इस तरह की कोशिश करो "मेरी सूची के लिए कुछ भी जोड़ने कृपया" की तरह है करने के लिए एक खाली सरणी की आपूर्ति है,

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) 
{ 
    DefaultListModel listmodel = (DefaultListModel)jList1.getModel(); 
    if(evt.getSource()==jButtonClear) { 
     listmodel.removeAllElements(); 
    } else { 
     listModel.addElement(new String[]{"Hello"}); 
    } 
} 
+0

ठीक कोशिश, अब जब मैं क्लिक करें साफ़ बटन यह कुछ नए डेटा जोड़ता है जो मुझे नहीं पता कि यह आता है ... लेकिन मैं इसे आज़माता हूं और यह सभी डेटा साफ़ करता है लेकिन जब मैं ऐड बटन पर क्लिक करता हूं तो यह नया डेटा जोड़ता है लेकिन यह पुराने डेटा को समाशोधन से पहले रखता है: कोड: DefaultListModel listmodel = (DefaultListModel) JList1.getModel(); evt.getSource() == jButtonClear {listmodel.removeAllElements(); – Pan24112012

+0

मैंने शर्तों को स्विच किया है (ताकि साफ़ करें अब 'removeAll'' को कॉल करें अन्यथा यह एक नया तत्व जोड़ देगा। मैंने आपका कोड चुरा लिया और इसे ठीक करने के बारे में सावधान नहीं था। मुझे यकीन नहीं है कि यह किसी अन्य क्रिया ईवेंट के साथ साझा कोड है या नहीं। यदि नहीं, तो 'addElement' line – MadProgrammer

+0

हटाएं हां यह जोड़ें बटन के साथ एक साझा कोड है, मैं कोड यहां नहीं डाल सकता क्योंकि मैं यहां नया हूं, लेकिन यहां जोड़ें बटन के कोड के अंत में क्या है: jList1.repaint(); \t jPanelVizualisationOptions1.update(); \t वर्तमान पैनेल.फ्रेश(); – Pan24112012

1
DefaultListModel model=new DefaultListModel(); 
     model.clear(); 
    jList1.setModel(model); 

अपने संशोधन के साथ copmile त्रुटियों के लिए इस

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