تبحث عن مجموعة من التحرير والسرد في SWT/Jface والتي تدعم الإكمال التلقائي

StackOverflow https://stackoverflow.com/questions/1069304

سؤال

أنا أبحث عن مجموعة من التحرير والسرد (عارض) في SWT / JFACE الذي يدعم الإكمال التلقائي / الكتابة ، أي يمكن للمستخدم إدخال اثنين من الحروف ويجب أن تعرض القائمة المنسدلة جميع عناصر المطابقة.

هل كانت مفيدة؟

المحلول

يمكنك أيضًا التحقق من 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"});

نصائح أخرى

لا أعتقد أن هناك أي شيء مثل هذا المدمج في التحرير والسرد أو comboviewer.

كما يقترح Thehiatus org.eclipse.jface.fieldassist.AutoCompleteField ربما يكون أفضل مكان للبحث عن هذا ، ومع ذلك ، هناك دعم للمجموعات:

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

قد تكون مهتمًا بـ Eclipse's "مساعدة المحتوى" خاصية. يمكنك رؤيته في العمل عند استخدام محرر Java's Eclipse IDE. أثناء تحرير التعليمات البرمجية المصدر ، سترى أحيانًا قائمة منسدلة مع عبارات تكمل ما كنت تكتبه. (لاحظ أنه يمكنك الضغط Ctrl+الفضاء لإجبار القائمة المنسدلة على عرضها.)

يمكنك تنفيذ هذا في تطبيق SWT/Jface الخاص بك أيضًا. ال "دليل مطور Java إلى Eclipse"لديه عينة تطبيق ينفذ مساعدة المحتوى. تطبيق العينة هو محرر SQL ، ويتم وصفه في الفصل 26 ، بناء محرر نص مخصص مع نص Jface." هناك في الواقع نظرة عامة عبر الإنترنت على الفصل هنا. مشروع محرر SQL ، com.ibm.jdg2e.editor.jfacetext.sql, ، يمكن ايجاده هنا.

من ناحية أخرى ، إذا كنت ترغب في إنشاء عنصر واجهة مستخدم التحرير والسرد الخاص بك والكذب التلقائي بناءً على الإدخال الذي يتم إدخاله ، فقد لا يكون هذا قابلاً للتطبيق للغاية. أنا أفكر في org.eclipse.jface.viewers.ComboViewer قد يكون مفيدًا (على الرغم من أنني لست إيجابيًا).

الدفع: http://sourceforge.net/projects/swtaddons/

أستخدمه في مشروعي (مع القليل من القرص).

من السهل حقًا إعداد هذا.

بفضل تعليق 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 و Completefield بشكل منفصل بشكل منفصل ، ولكن يمكن أن يكون على الأقل تلقائيًا عبر طريقة فائدة ثابتة أو شيء مشابه.

كمرجع للزائرين في المستقبل ، Autocompetecomboinput (الوظيفة الإضافية 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);

تتطلب الوظيفة الإضافية إضافة جميع الجرار أدناه إلى المكتبة: (مزيد من المعلومات)

  • Eclipse-equinox-common-3.5.0.jar
  • net.sf.swtaddons_0.1.1.bin_src.jar (المصدر)
  • org.eclipse.core.commands.jar
  • org.eclipse.jface-3.6.0.jar

انقر هنا لحزمة جرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top