2012-03-02 16 views
5

द्वारा इसे नहीं चुना जाता रहा आइटम के साथ एक GWT के ListBox है:GWT ListBox डिफ़ॉल्ट

listBox = new ListBox(); 
listBox.addItem("A"); 
listBox.addItem("B"); 
listBox.addItem("C"); 

और मैं इसे initialy नहीं चुना जाता होना चाहते हैं - ताकि कोई आइटम उठाया है। चयन की शुरुआती कमी को खाली टेक्स्ट द्वारा प्रतीकात्मक किया जाना चाहिए और किसी भी आइटम को चुनने के बाद उपयोगकर्ता "कोई चयन आइटम" नहीं चुन सकता है।

दुर्भाग्य से निम्न पंक्ति:

listBox.setSelectedIndex(-1); 

फेंकता IndexOutOfBoundsException

क्या जीडब्ल्यूटी लिस्टबॉक्स के साथ ऐसा व्यवहार प्राप्त करना संभव है?

+0

तो आपके पास पहली बार आइटम के रूप में एक खाली स्ट्रिंग हो सकती है, जब उपयोगकर्ता ने कुछ भी चुना है तो आप पहले को हटा सकते हैं। – Reddy

+0

फिर, यदि उपयोगकर्ता पहली बार सूची खोल देगा, तो उसे खाली विकल्प दिखाई देगा और इसे चुनने में सक्षम होगा। – rafalry

+0

आप इसे सत्यापित कर सकते हैं या ईवेंट पर क्लिक कर सकते हैं और रिक्त आइटम को हटा सकते हैं। – Reddy

उत्तर

8

हाँ यह सामान्य स्थिति है क्योंकि जब आप setSelectedIndex() पर कॉल करते हैं तो यह श्रेणी में मौजूद सूचकांक की जांच करेगा। ListBox कक्षा में विधि है।

private void checkIndex(int index) { 
    if (index < 0 || index >= getItemCount()) { 
     throw new IndexOutOfBoundsException(); 
    } 
    } 

तो डिफ़ॉल्ट रूप से 0 सूचकांक का चयन किया जाएगा। आप पहले आइटम के लिए एक खाली पाठ आइटम जोड़ने के लिए चाहते हैं, कोई रिक्त स्ट्रिंग के साथ शून्य इंडेक्स के लिए एक अतिरिक्त आइटम जोड़ें:

listBox = new ListBox(); 
listBox.addItem(" "); 
listBox.addItem("A"); 
listBox.addItem("B"); 
listBox.addItem("C"); 
listBox.addChangeHandler(new ChangeHandler() { 
     public void onChange(ChangeEvent changeEvent) { 
      SelectElement selectElement = listBox.getElement().cast(); 
      selectElement.getOptions().getItem(0).setDisabled(true); 

     } 
    }); 
+0

क्या इसका मतलब यह नहीं होगा कि यदि उपयोगकर्ता रिक्त आइटम चुनता है तो क्या यह पहले गैर-खाली आइटम में बदल जाएगा? –

0

यह ध्यान देने योग्य है कि एक ListBox एक चयन टैग का उपयोग करता लायक है। एक चुनिंदा टैग के साथ जो एकाधिक विशेषता निर्दिष्ट नहीं करता है, पहला आइटम ब्राउज़र द्वारा डिफ़ॉल्ट रूप से चुना जाता है, जिसे आप रोकने के लिए कुछ नहीं कर सकते हैं। आप इस व्यवहार को संशोधित कर सकते हैं, हालांकि - HTML में एक विकल्प टैग में एक चयनित विशेषता हो सकती है, जिसका अर्थ है कि यह डिफ़ॉल्ट चयन है। लेकिन जीडब्ल्यूटी किसी आइटम को डिफॉल्ट-चयनित के रूप में सेट करने का कोई तरीका नहीं प्रतीत होता है (यह अच्छा होगा अगर additem का ओवरलोड था जो डिफ़ॉल्ट रूप से चयनित के लिए बूलियन लेता था, या एक सेटडिफॉल्ट चयन (इंट इंडेक्स) विधि)।

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