3

ユーザーが選択しなければならない大量のデータがあります。私はそれを実装する方法を考えています(もちろん、GUIで)。いくつかのアイデアがあります。しかし、より良い代替手段があるかもしれないので、ここに投稿することを考えてみてください..

たとえば、ユーザーは多数のユーザー ベースから名前を選択する必要があります。ユーザーが名前を入力するためのテキストフィールドを単純に配置すると、同じ名前を異なる形式で入力したり、スペルミスなどの問題が発生する可能性があります...

ここには2つのオプションがあります

  • コンボボックスの使用
  • リストの使用(実際には、のようなものを考えていtool tipます。スペースの問題により、常にリスト全体を表示できないため)

しかし、コンボボックスはあまりユーザーフレンドリーではないと思います。ユーザーがエントリを選択するには、リスト全体をスクロールする必要があるためです。エントリ数が多すぎる場合、これは

つまり、今、私に残された選択肢は 1 つだけです。ユーザーがテキスト フィールドに入力しているテキストに従ってコンテンツを変更するポップアップ リスト。そのため、最初の数文字を入力すると、入力したテキストから始まるすべてのエントリがリストに表示されます。私の言いたいことはわかりましたよね?

この種のニーズを達成するために他に良いものはありますか?

上記を実装する場合、最善の方法は何ですか。JTextField必要な機能を追加するためにを拡張することを考えています。さて、ポップアップ リストのエントリを設定するメソッドをいくつか入れます。そしてactionListner、テキスト フィールドを監視するためにいくつか追加し、それに応じてポップアップ リストを制御します...

4

3 に答える 3

4

SwingLab のオートコンプリート機能を見ることができJCombBoxますJListJTextComponent

于 2012-08-12T06:06:17.163 に答える
4

オートコンプリートは、おそらく探しているものです。Google で「java swing jcombobox autocomplete」を検索し、過去数年間の結果を制限して、関連する結果を取得します。カスタム コードでこれを実装する方法については、多くの例とアイデアがあります。

時間を節約するために、少なくとも部分的または完全な実装を提供する「swingx」のようなカスタム ライブラリもいくつかあると思います。

http://swingx.java.net/

彼らは今年の初めにコードをリリースしたので、アクティブに見え、必要なものが含まれている可能性があります.

于 2012-08-12T06:06:46.157 に答える
3

オートコンプリート JComboBox/JTextFieldを使用する

  • 標準 Java クラスに基づく

  • より大きなデータセットでも問題ありません

  • FocusBackSpace Keyに問題はありませんCaret

  • パフォーマンスを向上させるために、array使用前に必要な並べ替えを行います

  • の簡単な回避策setStrict(true/false)、入力を制限するarray

于 2012-08-12T06:36:37.717 に答える