13

オートコンプリート/先行入力をサポートするSWT/JFaceのコンボ(ビューア)を探しています。つまり、ユーザーは数文字を入力でき、ドロップダウンリストに一致するすべての要素が表示されます。

4

6 に答える 6

13

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"});
于 2009-09-21T23:15:10.503 に答える
7

Combo にも ComboViewer にも、このようなものは組み込まれていないと思います。

thehiatus が示唆してorg.eclipse.jface.fieldassist.AutoCompleteFieldいるように、おそらくこれを探すのに最適な場所ですが、コンボのサポートがあります。

new AutoCompleteField(combo, new ComboContentAdapter(), new String[] 
    {"item0", "item1"});
于 2011-10-20T19:37:33.903 に答える
3

Eclipse の「Content Assist」機能に興味があるかもしれません。Eclipse IDE の Java エディターを使用すると、その動作を確認できます。ソース コードを編集していると、入力内容を補完する語句を含むドロップダウン メニューが表示されることがあります。( Ctrl+Spaceを押すと、ドロップダウン メニューが強制的に表示されることに注意してください。)

これは、独自の SWT/JFace アプリケーションにも実装できます。「Java Developer's Guide to Eclipse」には、Content Assist を実装するサンプル アプリケーションがあります。サンプル アプリケーションは SQL エディタであり、第 26 章「JFace Text を使用したカスタム テキスト エディタの構築」で説明されています。実際には、この章のオンライン概要がここにあります。サンプル SQL エディター プロジェクト はcom.ibm.jdg2e.editor.jfacetext.sql、ここにあります

一方、独自の Combo ウィジェットを作成し、入力された入力に基づいて自動入力する場合、これはあまり適切ではない可能性があります。役に立つかもしれないと思っていorg.eclipse.jface.viewers.ComboViewerます(私は肯定的ではありませんが)。

于 2009-07-25T23:39:59.423 に答える
1

チェックアウト: http://sourceforge.net/projects/swtaddons/

私は自分のプロジェクトでそれを使用します(少し調整して)。

于 2013-02-12T16:30:25.787 に答える
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 のモデルを別々に設定する必要があることですが、少なくとも静的ユーティリティ メソッドまたは同様のものを介して自動化できます。

于 2013-08-21T21:26:05.347 に答える