あなたはオートコンプリート機能を探しています(質問を理解しているように):SwingXでサポートされており、非常に使いやすいです。
要約すると、カスタム ObjectToStringConverter を実装し、そのコンバーターを使用して autoCompleteDecorator を使用してコンボボックスを構成します。何かのようなもの:
/**
* A converter which expects an item of an array type and returns
* a string representation of its first value.
*/
public static class ArrayToStringConverter extends ObjectToStringConverter {
@Override
public String getPreferredStringForItem(Object item) {
if (!(item instanceof Object[])) return DEFAULT_IMPLEMENTATION.getPreferredStringForItem(item);
Object[] array = (Object[]) item;
return DEFAULT_IMPLEMENTATION.getPreferredStringForItem(array[0]);
}
}
// usage
// assuming an model with items being arrays
JComboBox combo = new JComboBox(arrayModel);
// the renderer supporting multiple columns, f.i. a table
combo.setCellRenderer(new TabularListRenderer());
AutoCompleteDecorator.decorate(combo, new ArrayToStringConverter());
完全な動作例 (レンダラーを含み、ポップアップの幅をコンボ自体よりも大きくする方法を示す) は、インキュベーター セクションの TableAsListRenderer です。
ところで: オートコンプリート機能はスタンドアロン モジュールであり、maven を介してアクセスするか、java.netの maven 担当者から手動でダウンロードできます。swingx-autocomplete-1.6.4.jar (興味がある場合は、対応するドキュメント/ソース) が必要です。