2009-06-24 11 views
5

एस JPanel पर उपयोगकर्ताओं को "स्पष्ट बटन" पर क्लिक करने के लिए, JPanel (सभी व्यक्तिगत फ़ील्ड को "" सेट करने के बजाय) को लूप करने की आवश्यकता है।जेपीनेल

JTextField एस की खोज में JPanel के माध्यम से पुनरावृत्ति करने के लिए मैं प्रत्येक लूप के लिए कैसे उपयोग कर सकता हूं?

उत्तर

15
for (Component c : pane.getComponents()) { 
    if (c instanceof JTextField) { 
     ((JTextField)c).setText(""); 
    } 
} 

लेकिन अगर आपके पास JTextFields और अधिक गहराई से नेस्ट, तो आपको निम्न पुनरावर्ती फार्म का उपयोग कर सकते हैं:

void clearTextFields(Container container) { 
    for (Component c : container.getComponents()) { 
     if (c instanceof JTextField) { 
      ((JTextField)c).setText(""); 
     } else 
     if (c instanceof Container) { 
      clearTextFields((Container)c); 
     } 
    } 
} 

संपादित करें:टॉम Hawtin के लिए एक नमूना - tackline सुझाव होगा सूची के लिए आपकी फ्रेम कक्षा में:

List<JTextField> fieldsToClear = new LinkedList<JTextField>(); 

और जब आप व्यक्तिगत टेक्स्ट प्रारंभ करते हैं ,

someField = new JTextField("Edit me"); 
{ fieldsToClear.add(someField); } 

और जब उपयोगकर्ता स्पष्ट बटन पर क्लिक करता है बस: खेतों, इस सूची में शामिल करें

for (JTextField tf : fieldsToClear) { 
    tf.setText(""); 
} 
+0

क्या यह स्पष्ट कॉम्बो बॉक्स भी है? (साथ ही स्थिर हो सकता है, बीटीडब्लू।) –

+0

जेसीम्बोबॉक्स (जेकंपोनेंट बढ़ाता है) और जेटीक्स्टफिल्ड (जेटीक्स्ट कॉम्पोनेंट जो जेकंपोनेंट बढ़ाता है) दो अलग-अलग पथों पर हैं – akarnokd

+0

मैंने जेसीम्बोबॉक्स के स्रोत की जांच की और मुझे कोई भी जगह नहीं दिखाई दे रही है जहां जेकंबोक्स ने अपना संपादक जोड़ा इसके घटकों की सूची के लिए घटक। – akarnokd

1

एक और उत्तर जबकि आपकी समस्या का समाधान के लिए एक सीधा रास्ता दिखाता है, आपके सवाल जिसका अर्थ है एक गरीब समाधान

आम तौर पर परतों के बीच स्थिर निर्भरता चाहते हैं। आपको getCommponents के माध्यम से पैक जाना होगा। कास्टिंग (जेनिक्स मानना) यह देखने का एक आसान तरीका है कि कुछ गलत हो गया है।

तो जब आप किसी फॉर्म के लिए टेक्स्ट फ़ील्ड बनाते हैं, तो उन्हें स्पष्ट ऑपरेशन में साफ़ करने के साथ-साथ उन्हें पैनल में जोड़ने के लिए सूची में जोड़ें। बेशक वास्तविक कोड में शायद अन्य चीजें जिन्हें आप भी करना चाहते हैं। वास्तविक कोड में आप शायद JComponent एस के बजाय मॉडल (संभवतः Document) से निपटना चाहते हैं।

+0

+1 – akarnokd

+0

हाय वहाँ, बहुत बहुत धन्यवाद। यह प्रभावशाली लगता है लेकिन मुझे नहीं पता कि आपके समाधान को कैसे कार्यान्वित किया जाए। कॉमकिन उदाहरण 1000 शब्दों के लायक हैं। बहुत सराहना की। डल्लाग। –

+0

और इसे आगे बढ़ाने के लिए, मैंने एक बार मस्ती के लिए एनोटेशन आधारित समाधान की कोशिश की। मैंने कक्षा में अपने क्षेत्र को @SaveContent के साथ एनोटेट किया और एनोटेटेड घटकों की सामग्री को लोड/सहेजने के लिए एक प्रतिबिंबित दृष्टिकोण का उपयोग किया। – akarnokd

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