2012-04-30 18 views
6

मेरे पास एक जावा कॉम्बो बॉक्स है और एक SQLite डेटाबेस से जुड़ा एक प्रोजेक्ट है। मैं एक संबद्ध आईडी और नाम के साथ एक वस्तु मिल गया है, तो:जावा कॉम्बोबॉक्स नाम के लिए अलग-अलग मूल्य

class Employee { 
    public String name; 
    public int id; 
} 

क्या एक JComboBox में इन प्रविष्टियों डालने की सबसे अच्छा तरीका है ताकि उपयोगकर्ता कर्मचारी का नाम देखता है, लेकिन मैं EmployeeID जब मैं पुनर्प्राप्त कर सकते हैं है:

selEmployee.getSelectedItem(); 

धन्यवाद

उत्तर

10

सबसे पहले विधि: कर्मचारी वर्ग पर toString() लागू है, और यह नाम वापसी कर सकते हैं। अपने कॉम्बो बॉक्स मॉडल में कर्मचारी के उदाहरण शामिल करें। कॉम्बो से चयनित ऑब्जेक्ट प्राप्त करते समय, आपको एक कर्मचारी उदाहरण मिलेगा, और आप इस प्रकार अपना आईडी प्राप्त कर सकते हैं।

दूसरी विधि: यदि toString() नाम (डीबगिंग जानकारी, उदाहरण के लिए) के अलावा कुछ और देता है, तो ऊपर जैसा ही करें, लेकिन इसके अतिरिक्त अपने कॉम्बो में एक कस्टम सेल रेंडरर सेट करें। इस सेल रेंडरर को कर्मचारी को मूल्य डालना होगा, और लेबल के टेक्स्ट को कर्मचारी के नाम पर सेट करना होगा।

public class EmployeeRenderer extends DefaulListCellRenderer { 
    @Override 
    public Component getListCellRendererComponent(JList<?> list, 
                Object value, 
                int index, 
                boolean isSelected, 
                boolean cellHasFocus) { 
     super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
     setText(((Employee) value).getName()); 
     return this; 
    } 
} 
0

आप अपने कस्टम DefaultComboBoxModel बना सकते हैं। उसमें आपके मामले में Vector<Employee> empVec में आपके डेटा का वेक्टर बनाएं। आपको getSelectedItem() विधि को अतिरिक्त रूप से ओवरराइड करने की आवश्यकता है और वेक्टर से मूल्य पुनर्प्राप्त करने के लिए getSelectedIndex() का उपयोग करें।

6

कर्मचारी ऑब्जेक्ट को JComboBox में जोड़ें और कर्मचारी नाम वापस करने के लिए कर्मचारी वर्ग की टस्टिंग विधि को ओवरराइट करें।

Employee emp=new Employee("Name Goes here"); 
comboBox.addItem(emp); 
comboBox.getSelectedItem().getID(); 
... 
public Employee() { 
    private String name; 
    private int id; 
    public Employee(String name){ 
     this.name=name; 
    } 
    public int getID(){ 
     return id; 
    } 
    public String toString(){ 
     return name; 
    } 
} 
+0

द्वारा ऐसा कर सकते हैं मुझे लगता है कि 'को बदलने के बजाए एक रेंडरर का उपयोग करना बेहतर है जीआरआई के अनुरूप स्ट्रिंग() '। –

3

मुझे लगता है कि जब आप ResultSet के साथ अपने JComboBox भरने कर रहे हैं इस का उपयोग करेंगे HashMap कुछ इस तरह करने के लिए बेस्ट और सरल रास्ता

HashMap<Integer, Integer> IDHolder= new HashMap<>(); 

int a=0; 
while(rs.next()) 
{ 
    comboBox.addItem(rs.getString(2)); //Name Column Value 
    IDHolder.put(a, rs.getInt(1)); //ID Column Value 
    a++; 
} 

अब जब भी आप की आईडी प्राप्त करना चाहते हैं किसी भी चयनित कॉम्बोबॉक्स आइटम की आईडी आप

int Id = IDHolder.get(comboBox.getSelectedIndex()); 

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

  • कोई संबंधित समस्या नहीं^_^