2012-10-16 33 views
5

में एकाधिक टेक्स्ट फ़ील्ड में एक दस्तावेज़ श्रोता होना संभव है मेरे पास JTable पर 12 कॉलम के लिए 12 फ़िल्टर हैं। प्रत्येक फ़िल्टर एक TextField प्रकार JTextField है। जब भी कोई उपयोगकर्ता टेक्स्ट बॉक्स फ़िल्टर में डेटा दर्ज करता है तो खोज होती है।क्या स्विंग

उदाहरण: मान लीजिए, मेरे पास 3 कॉलम और 3 टेक्स्ट बॉक्स हैं जो फ़िल्टर के रूप में हैं। अब किसी भी चीज जो किसी भी टेक्स्ट बॉक्स में टाइप की गई है, मेरी टेबल फ़िल्टरिंग होनी चाहिए। यह बहुत अच्छा हो रहा है। पाठ क्षेत्र से प्रत्येक के लिए

╔═════════════╦═════════════╦═════════════╗ 
║ [TextField] ║ [TextField] ║ [TextField] ║ 
╠═════════════╬═════════════╬═════════════╣ 
║    ║    ║    ║ 
╠═════════════╬═════════════╬═════════════╣ 
     ...   ...   ... 
╠═════════════╬═════════════╬═════════════╣ 
║    ║    ║    ║ 
╚═════════════╩═════════════╩═════════════╝ 

पाठ क्षेत्र श्रोता इस तरह दिखता है,

textField.getDocument().addDocumentListener(new DocumentListener() { 
    public void changedUpdate(DocumentEvent e) { method(); } 
    public void removeUpdate(DocumentEvent e) { method(); } 
    public void insertUpdate(DocumentEvent e) { method(); } 
}; 

मेरे सवाल है, मैं जो मैं वास्तव में खुश नहीं था सभी 12 पाठ क्षेत्रों, के लिए इस कोड को दोहरा रहा हूँ। क्या यह हमारे पास एकमात्र तरीका है? या कोई मुझे एक बेहतर तरीका सुझा सकता है?

उत्तर

8
  • किसी अज्ञात वर्ग से एक भीतरी कक्षा में स्विच करें और उसी फ़ील्ड को प्रत्येक फ़ील्ड में संलग्न करें। स्रोत
  • में निहित है, इसे एक अलग वर्ग बनाएं और प्रत्येक फ़ील्ड के लिए अलग श्रोताओं का उपयोग जारी रखें। से बचा जाता है

कम से कम कोड दोहराव एक आंतरिक वर्ग

+0

+1 .. प्रतिभाशाली का एक उदाहरण के लिए this tutorial देखें .. एक आकर्षण की तरह काम किया। कोड की कोई अनावश्यकता नहीं .. बहुत बहुत धन्यवाद .. :) – Amarnath

+2

आप अभी भी एक अज्ञात वर्ग के साथ ऐसा कर सकते हैं: 'DocumentListener listener = new DocumentListener() {...}; के लिए (JTextField टेक्स्टफील्ड: फ़ील्ड्स) {textField.getDocument()। addDocumentListener (श्रोता); } ' –

+0

@ वाल्टरलेन सही, मैं उस विकल्प को भूल गया – Robin