2010-01-19 11 views
6

मैं एक डेटाबेस है कि दो क्षेत्रोंJComboBox आइटम को इसके संबंधित आईडी में कैसे मैप करें?

  • आईडी
  • नाम

मैं सभी डीबी में संग्रहीत नाम के साथ एक JComboBox "combo1" आबादी है शामिल में एक टेबल है। अब मैं चाहता हूं कि जब भी कोई उपयोगकर्ता "combo1" का कोई आइटम चुनता है, तो मैं चयनित आइटम की "आईडी" को पहचान सकता हूं।

लेकिन समस्या यह है कि नाम किसी तालिका में डुप्लीकेट हो सकते हैं। इसलिए मान लें कि किसी तालिका में 3 डुप्लिकेट नाम हैं, तो

Q1। "Combo1" में आइटम कैसे दिखाएं ताकि उपयोगकर्ता उन सामान्य नामों के बीच अंतर कर सके?

प्रश्न 2। उपयोगकर्ता ने किसी आइटम पर क्लिक करने के बाद, मैं कैसे पहचान सकता हूं कि उपयोगकर्ता ने किस आइटम पर क्लिक किया है, अगर चयनित आइटम में डुप्लिकेट है?

उत्तर

10

डेटा के अपने जोड़ी स्टोर करने के लिए एक वर्ग का उपयोग करें। JComboBox लेबल के रूप में अपनी toString() विधि का उपयोग करेगा।

public class Item 
{ 
    int id; 
    String name; 

    public String toString() 
    { 
     return this.name+"("+id+")"; 
    } 
} 
(...) 
Item array[]=new Item[]{ ... };//fill the array with your items 
JComboBox c=new JComboBox(array); 
(...) 
//use the combo 
(...) 
Item selected=(Item)c.getSelectedItem(); 
System.err.println("id is "+selected.id); 
2

यदि आपको सभी आईडी/नाम संयोजन मिलते हैं, तो एक कक्षा क्यों न बनाएं जो उन्हें दोनों एक साथ रखती है, तो आप आईडी प्राप्त करने के लिए बस उस ऑब्जेक्ट को JComboBox से वापस कर सकते हैं।

जैसे:

class NameIDObj{ 

int id; 
String name; 

NameIDObj(int id, String name){ 
this.id = id; 
this.name = name; 
} 

public String toString(){ 
return name+" ("+id+")"; 
} 


} 
1

जेसीम्बोबॉक्स एक वस्तु [] को अपने मूल्यों के रूप में लेता है। मैं बिल्कुल निश्चित नहीं हूं लेकिन आप अपनी खुद की कक्षा बनाने का प्रयास कर सकते हैं जिसमें प्रत्येक JComboBox आइटम के लिए एक नाम और आईडी है और JComboBox को इन कस्टम ऑब्जेक्ट्स की सरणी पारित करने का प्रयास करें।

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