swt/jface에서 autocomplete를 지원하는 콤보 (뷰어)를 찾고 있습니다.
-
21-08-2019 - |
문제
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 애드온),이를 달성하는 방법 일 수도 있습니다.
스크린 샷 용 코드 스 니펫 (코드 템플릿의 위의 문서 링크 참조) :
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
딸깍 하는 소리 여기 항아리 팩 용.