문제

SWT / JFace에서 AutoComplete / Type-Ahead를 지원하는 콤보 (뷰어)를 찾고 있습니다. 즉, 사용자는 몇 문자를 입력 할 수 있으며 드롭 다운 목록에는 모든 일치하는 요소가 표시되어야합니다.

도움이 되었습니까?

해결책

당신은 또한 확인할 수 있습니다 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"});

다른 팁

나는 콤보 나 콤보기에 내장 된 것이 없다고 생각합니다.

thehiatus가 제안한 것처럼 org.eclipse.jface.fieldassist.AutoCompleteField 아마도 이것을 찾기에 가장 좋은 곳이지만 콤보에 대한 지원이 있습니다.

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

Eclipse에 관심이있을 수 있습니다 "콘텐츠 보조" 특징. Eclipse IDE의 Java 편집기를 사용할 때 실제로 볼 수 있습니다. 소스 코드를 편집 할 때 타이핑 한 내용을 완성하는 문구가있는 드롭 다운 메뉴가 표시됩니다. (누를 수 있습니다 Ctrl+공간 드롭 다운 메뉴가 표시되도록 강요합니다.)

자신의 SWT/Jface 응용 프로그램에서도이를 구현할 수 있습니다. "Eclipse에 대한 Java 개발자 가이드"콘텐츠 어시스트를 구현하는 샘플 응용 프로그램이 있습니다. 샘플 응용 프로그램은 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 및 AutoCompletefield의 모델을 별도로 채워야하지만 정적 유틸리티 방법 또는 이와 유사한 것을 통해 적어도 자동화 할 수 있다는 것입니다.

미래의 방문자를위한 참조로, 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);

애드온에는 아래의 모든 항아리가 라이브러리에 추가되어야합니다.더 많은 정보)

  • Eclipse-equinox-Common-3.5.0.jar
  • net.sf.swtaddons_0.1.1_bin_src.jar (Sourceforge)
  • org.eclipse.core.commands.jar
  • org.eclipse.jface-3.6.0.jar

딸깍 하는 소리 여기 항아리 팩 용.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top