2013-02-11 17 views
5

मैं ID, नाम के साथ एक Proveedores वर्ग है, अंतिम नाम और मैं बता गया में इस वस्तु जोड़ना चाहते हैं।संशोधित toString() विधि JComboBox स्विंग

 ListIterator listaNombre = listaProveedores.listIterator(); 
     listado = new Proveedores[listaProveedores.size()]; 
     int cont = 0; 
     while (listaNombre.hasNext()) { 
      prov = (Proveedores) listaNombre.next(); 
      listado[cont] = prov; 
      cont++; 
     } 
this.vista.cArticuloFamilia.setModel(new javax.swing.DefaultComboBoxModel(listado)); 

इस कोड के साथ मैं differents ऑब्जेक्ट को combobox में जोड़ता हूं। यह काम करता हैं। लेकिन अब मैं केवल नाम विशेषता दिखाने के लिए toString विधि को ओवरराइड करना चाहता हूं। अब combobox मुझे नाम वर्ग (Proveedores) और आईडी दिखाता है।

entidades.Proveedores[idProveedores=1] 

प्रोवेडियर्स नाम दिखाने के लिए मैं इसे ओवरराइड कैसे कर सकता हूं?

धन्यवाद।

+0

प्रोजेडोरस को विधि को ओवरराइड करने के लिए आप उपclass क्यों नहीं करते? – Mirco

+0

धन्यवाद। मैं आपको प्यार करता हूँ – Filowk

+7

बेहतर अभी भी - 'toString() 'पर निर्भर नहीं है बल्कि इसके बजाय एक कस्टम रेंडरर का उपयोग करें। उपयोगकर्ता को प्रदर्शित करने के बजाए 'toString()' विधि ओवरराइड प्रोग्राम डिबगिंग के लिए उपयोग किया जाना चाहिए। –

उत्तर

9

उपयोग एक कस्टम ListCellRenderer यह पूरा करने के।

आप toString() जटिल वस्तुओं के लिए जीयूआई डेटा उत्पन्न करने के तैयार नहीं करना चाहिए। यह डेवलपर्स आंखों के लिए आंतरिक डेटा प्रतिनिधित्व के लिए है, न कि उपयोगकर्ताओं को।

+0

नहीं किया जा सका है ' टी खुद को बेहतर कहो। 1+ –

+0

+1 एमेन ....... – MadProgrammer

+1

वही यहां - अविश्वसनीय कैसे टूस्टिंग गलत उपयोग इन दिनों फैल रहा है ... – kleopatra

6

जावा टूस्ट्रिंग() का उपयोग ऑब्जेक्ट का स्ट्रिंग प्रस्तुति डिफ़ॉल्ट रूप से प्राप्त करने के लिए करता है, यह ऑब्जेक्ट के हैशकोड के बाद पूरी तरह से योग्य क्लासनाम @ लौटाएगा।

उपयोग ListCellRenderer ComboBox में Proveedores नाम प्रदर्शित करने के लिए।

नमूना कोड:

public static class ProveedoresRenderer extends DefaultListCellRenderer { 
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     Object item = value; 

     // if the item to be rendered is Proveedores then display it's Name 
     if(item instanceof Proveedores) { 
      item = ((Proveedores) item).getName(); 
     } 
     return super.getListCellRendererComponent(list, item, index, isSelected, cellHasFocus); 
    } 
} 

तो JComboBox को ProveedoresRenderer निर्धारित किया है।

ListIterator listaNombre = listaProveedores.listIterator(); 
listado = new Proveedores[listaProveedores.size()]; 
int cont = 0; 
while (listaNombre.hasNext()) { 
    prov = (Proveedores) listaNombre.next(); 
    listado[cont] = prov; 
    cont++; 
} 
this.vista.cArticuloFamilia.setModel(new javax.swing.DefaultComboBoxModel(listado)); 

// Set custom renderer to the combobox 
this.vista.cArticuloFamilia.setRenderer(new ProveedoresRenderer()); 
संबंधित मुद्दे