リストに特定の動作を適用しない限り、このテーブルのエディターとしてコンボボックスを追加することで、別の方法を試すことができます。その例については、DefaultCellEditorを確認してください。
呼び出されたときにコンボボックスの内容を正しい値で変更すると、必要に応じて一致すると思います。このためには、おそらくTableCellEditorを実装して、独自の CellEditor を作成する必要があります。これにより、(メソッド getTableCellEditorComponent() で) 呼び出されるタイミングに応じて値を変更できるようになります。
編集:コメントで話しているKeyListenerの問題については、実際のテキストが JTextField で更新される前に Key イベントが送信されると考える必要があります。したがって、 への呼び出しがgetText()
新しい文字なしで値を返すのは正常です。
ただし、これはKeyEventであるため、入力された文字にevt.getKeyChar()
直接 orevt.getKeyCode()
でアクセスして、これが実際に入力された文字かどうかを確認できます。これらのメソッドを使用すると、必要な完全な「テキスト」を知ることができます。
また、コメントのビデオから、ユーザーが入力を開始した内容に応じて実際に適応し、既に入力された内容に応じて選択を制限するリストが必要なようです。
追加のライブラリを使用できる (および許可されている) 場合は、SwingX コンポーネント( http://swinglabs.org/ ) を確認することをお勧めします。このライブラリは、通常、swing インターフェースで使用するための多くの有用なコンポーネントを提案します。彼らのサイトにはデモがありますが、現時点では利用できないようですが、後日になる可能性があります。
彼らのパッケージ「autocomplete」には、「AutoCompleteDecorator」という名前のクラスと、コンボボックスエディターを改善できるその他の便利なクラスが含まれているため、ユーザー入力自体を完成させ、スクロールしてリスト内の適切な位置(リストをフィルタリングすることもできると思いますが、あなたが望む正確な動作ですが、完全にはわかりません)。これを使用できれば、キャレット イベントを自分で処理したり、リストを更新したりする手間が実際に軽減されます。
.Jar と javadocは、彼らのサイトからダウンロードできます。オートコンプリート パッケージの別のサイトからの javadoc のコピーを次に示します。その間に変更された可能性がありますが、アイデアが得られます。