2009-07-01 12 views
11

मैं SWT/JFace में एक कॉम्बो (दर्शक), जो स्वत: पूर्ण/टाइप-आगे का समर्थन करता है के लिए देख रहा हूँ का समर्थन करता है के लिए खोज रहे यानी उपयोगकर्ता पात्रों में से एक जोड़े को प्रवेश कर सकते हैं और ड्रॉप डाउन सूची सभी मिलान तत्वों को दिखाना चाहिए।, SWT/JFace में एक कॉम्बो (दर्शक), जो स्वत: पूर्ण

उत्तर

11

तुम भी org.eclipse.jface.fieldassist.AutoCompleteField वर्ग की जाँच कर सकते हैं। यह कॉम्बो नहीं है, केवल एक टेक्स्ट फ़ील्ड है, लेकिन यह ऑटो पूर्ण कार्यक्षमता जोड़ता है जैसे कि यह एक कॉम्बो बहुत आसानी से था।

Text textField = new Text(parentComposite, SWT.BORDER); 
new AutoCompleteField(textField, new TextContentAdapter(), new String[] 
    {"autocomplete option 1", "autocomplete option 2"}); 
3

आपको ग्रहण "सामग्री सहायता" सुविधा में रुचि हो सकती है। ग्रहण आईडीई के जावा संपादक का उपयोग करते समय आप इसे क्रिया में देख सकते हैं। जैसे ही आप स्रोत कोड संपादित करते हैं, आप कभी-कभी वाक्यांशों के साथ एक ड्रॉप-डाउन मेनू देखेंगे जो आप टाइप कर रहे थे। (ध्यान दें कि ड्रॉप-डाउन मेनू को प्रदर्शित करने के लिए Ctrl + Space दबाएं।)

आप इसे अपने स्वयं के SWT/JFace एप्लिकेशन में भी कार्यान्वित कर सकते हैं। "Java Developer's Guide to Eclipse" में एक नमूना अनुप्रयोग है जो सामग्री सहायक लागू करता है। नमूना अनुप्रयोग एक एसक्यूएल संपादक है, और यह अध्याय 26 में वर्णित है, "जेएफएएस टेक्स्ट के साथ कस्टम टेक्स्ट एडिटर बनाना।" वास्तव में अध्याय here का ऑनलाइन अवलोकन है। नमूना एसक्यूएल संपादक परियोजना, com.ibm.jdg2e.editor.jfacetext.sql, here पाया जा सकता है।

दूसरी ओर, आप अपने खुद के कॉम्बो विजेट बनाना चाहते हैं और इसे इनपुट है कि दर्ज किया जा रहा के आधार पर स्वचालित रूप से है, तो यह बहुत ही लागू नहीं हो सकता है। मुझे लगता है कि org.eclipse.jface.viewers.ComboViewer सहायक हो सकता है (हालांकि मैं सकारात्मक नहीं हूं)।

6

मुझे नहीं लगता कि यह या तो कॉम्बो या ComboViewer में निर्मित की तरह कुछ भी नहीं है: आप इस के रूप में सरल कुछ कर सकते हैं। एक साथ http://sourceforge.net/projects/swtaddons/

मैं अपने प्रोजेक्ट में इसका इस्तेमाल करते हैं (:

new AutoCompleteField(combo, new ComboContentAdapter(), new String[] 
    {"item0", "item1"}); 
1

चेक आउट:

thehiatus से पता चलता है org.eclipse.jface.fieldassist.AutoCompleteField शायद सबसे अच्छी जगह इस बात के लिए देखने के लिए है, तथापि, वहाँ संयोग के लिए समर्थन है थोड़ा चिमटा)।

1

यह इस सेट करने के लिए वास्तव में मृत आसान है।

paz117 की टिप्पणी के लिए धन्यवाद के रूप में, सोचा था कि मैं इस काम करने के लिए कोड का हिस्सा चाहते हैं:

String[] proposals = new String[controller.model().size()]; 

for (int i = 0; i < controller.model().size(); i++) 
    proposals[i] = controller.model().get(i).getAppropriateName(); 

comboViewer = new ComboViewer(parent, SWT.NONE); 
comboViewer.setContentProvider(new ArrayContentProvider()); 
comboViewer.setLabelProvider(new AppropriateLabelProvider()); 
comboViewer.setInput(_controller.model()); 
// additionally, configure the comboViewer arbitrary 
new AutoCompleteField(comboViewer.getCombo(), new ComboContentAdapter(), proposals); 

केवल मामूली उपद्रव आप अलग से अलग ComboViewer और AutoCompleteField के मॉडल को भरने के लिए है कि है, लेकिन उस एक स्थिर उपयोगिता विधि या कुछ समान के माध्यम से कम से कम स्वचालित किया जा सकता है।

1

भावी आगंतुकों के लिए संदर्भ के रूप में, AutocompleteComboInput (SWT एड-ऑन), यह भी एक तरह से इस लक्ष्य को हासिल करने के लिए हो सकता है।स्क्रीनशॉट के लिए

AutocompleteComboInput

कोड स्निपेट (ऊपर दस्तावेज़ीकरण लिंक का उल्लेख कोड टेम्पलेट के लिए):

import net.sf.swtaddons.autocomplete.combo.AutocompleteComboInput; 
... 

subjectCodeCombo = new Combo(tab3Composite, SWT.DROP_DOWN); 
// other code modifying Combo appearance here... 

// returns a String[] of items retrieved from database 
String[] subjectCodeArray = dbQuery.subjectsToArray(); 

subjectCodeCombo.setItems(subjectCodeArray); 
subjectCodeCombo.setText("- SELECT -"); 
new AutocompleteComboInput(subjectCodeCombo); 

ऐड-ऑन सभी जार नीचे लाइब्रेरी में जोड़े जाने की आवश्यकता है: (more info)

  • ग्रहण-विषुव-आम-3.5.0.jar
  • net.sf.swtaddons_0.1.1_b in_src.jar (sourceforge)
  • org.eclipse.core.commands.jar
  • org.eclipse.jface-3.6.0.jar जार पैक के लिए

क्लिक करें here

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