2

Swing で高速な検索結果を表示するには、どのコンポーネントが最適かを考えています。私はこのようなものを作成し、ユーザーがテキストを入力できるテキスト フィールドを作成し、入力中にデータベースのバックエンド高速検索を改善し、テキスト ボックスの下にデータを表示したいと考えています。結果をブラウズし、プレス入力すると、結果が表に表示されます。私の質問は、表示するためのこのロジックを既に持っているコンポーネントはありますか? そうでない場合、それを実装する最良の方法は何ですか。

この検索は、デスクトップ アプリケーションで可能であれば、Web 上で ajax が提供するものであり、同じロジックと同じルック アンド フィールです。

4

6 に答える 6

6

Java Swingのオートコンプリートコンポーネントのようなものをお探しですか?

SwingXにはそのようなコンポーネントがあります。JavaDocについてはこちらをご覧ください。JListのコンテンツからテキストボックスを自動入力するなど、さまざまなことを行うための多くのユーティリティメソッドがあります。

于 2008-09-22T15:09:33.957 に答える
3

Glazed Listsをご覧になることを強くお勧めします。これは、より優れたオープンソースのJavaライブラリの1つであり、質問の大部分を非常に簡単にします。

于 2008-09-23T04:58:06.460 に答える
3

ユーザーがフィールドに入力する(またはフィールドを変更する)たびに通知されるように、最初にリスナーをにアタッチする必要JTextFieldがあります。Document

そこから、必要なサーバー側のコードを実行できます。その結果を使用して、リストボックスを更新できます。

覚えておくべきいくつかのこと:

  1. バックエンドに対して検索を行うためのコードは、別のスレッドにある必要があります
  2. リストボックスを更新するコードは、リストボックスのモデルを更新する必要があります
  3. すべてのバックエンド検索結果を管理して、リストボックスを最新の結果のみで更新するようにする必要があります(たとえば、ユーザーが「A」と入力すると、backenfが検索します。一方、ユーザーが「C」と入力すると、バックエンド検索が開始されます。 「AC」。「AC」検索結果が利用可能な場合は、「A」検索の結果がリストボックスに表示されないようにする必要があります)。
于 2008-09-22T15:05:33.810 に答える
1

1つの石で2羽の鳥を殺すために:別のインデックススレッドを用意します。この意志:

  1. 検索が実行されるたびに検索速度を向上させます。
  2. インデックス作成は別のスレッドで行われるため、UIの応答性が向上します。

もちろん、インデックス作成の正確な実行方法は、特定のアプリケーションによって大きく異なります。調査を開始するのに適した場所は次のとおりです。検索インデックスそして、 Web3.0 [原文のまま]への参照を無視してください。

于 2008-09-22T18:38:54.313 に答える
1

Hibernate Search を使用します。

SwingHack ( http://oreilly.com/catalog/9780596009076/ ) の本には、この例があります。

于 2008-09-22T15:02:29.700 に答える
1

もちろん可能です。それも簡単です。用語のドロップダウンリストについては、ポップアップメニューを使用してください。これは簡単です。入力したテキストのバックグラウンド処理も簡単です。楽しみ!

于 2008-09-30T15:03:29.807 に答える