以下のように、JAVA Swing に最適な検索テキストフィールドを実行する方法:
1 に答える
プロセスの最後に柔軟で再利用可能なソリューションが必要な場合は、実際にはこれを実現するのは簡単ではありません。
a JTextField
(わかりました、それは明らかです)、 aJList
および aJPopupMenu
またはが必要JWindow
です。
を取得して一致のString
を生成し、内に表示できる何らかのフィルタリング メカニズムが必要です。これには、特定の実装を提供する必要があります。List
JList
ListCellRenderer
DocumentListener
に を添付する必要がありJTextField
ます。ドキュメントが更新/変更された場合は、テキスト フィールドのテキストをフィルタリング エンジンに渡して、可能なすべての一致を検索し、JList
.
ポップアップが表示されない場合は、テキスト フィールドの場所によってはリストが画面に収まらない可能性があることを考慮して、ポップアップを表示する必要があります。表示されている場合は、ウィンドウを再パックして、使用可能なオプション (存在する場合) をより適切に調整する必要がある場合があります。
ユーザーがフィールドを離れた場合、最初の一致に基づいてテキストをオートコンプリートするか、フィールドを無効にするか、テキストをそのままにしてポップアップが表示されている場合は閉じるかを決定する必要があります。
ユーザーが値をクリックした場合、String
アイテムの表現を抽出してテキスト フィールドに適用し、ポップアップを閉じる必要があります。
down arrowポップアップ ウィンドウを開いたり、リストの最初の項目に移動したりできるように、テキスト フィールドにキー バインドを追加する必要があります。これは集中力の低下を引き起こしますので、それに備えておく必要があります。
Escapeユーザーがポップアップを閉じることができるように、ポップアップ/フィールドにキーボードバインディングを提供することも必要になるでしょう。