テーブルがあり、検索がデータベースに接続されている JFrame があります。検索したいのですが、ボタンは必要ありません。そのため、テキストフィールドに名前を入力し始めたときに検索が行われます。html の ajax のように。これはJavaで行うことができますか???
2 に答える
そのため、テキストフィールドに名前を入力し始めたときに検索が行われます
の に を付けることで、すべての入力に反応DocumentListener
できDocument
ますJTextField
。そのリスナーは、ユーザーがテキスト フィールドに入力を提供するたびに通知されます (入力、ドラッグ アンド ドロップ、コピー アンド ペーストなどによるものであるかどうかに関係なく)。
ただし、キャッチは、ユーザー入力で何をしたいかです。はDocumentListener
イベント ディスパッチ スレッドでトリガーされます。このスレッドは、実行時間の長い操作によってブロックされるべきではありません。そうしないと、UI がフリーズします。データベース クエリの実行は、「長時間実行操作」と見なされます。これは、検索がバックグラウンド スレッドで実行されていることを確認する必要があることを意味します。検索が完了したら、テーブルを更新できます。これは、イベント ディスパッチ スレッドで行う必要があります。このSwingWorker
クラスは、この状況で役立ちます。スレッド ルールの詳細については、このチュートリアルを参照してください。
2 番目の問題は、新しい入力が提供されたときに、おそらく以前の検索をキャンセルしたいということです。ほとんどの場合、ユーザーは、データベースにクエリを実行して結果を入力するよりも速く入力できますJTable
(ネットワーク接続がそれほど速くないと仮定します)。
はい、これは、テキストフィールドにアタッチされた actionListener を使用して Java で実行できます。actionListener javadocについては、こちらを参照してください。
同様のスタックオーバーフローの質問がここにあります:リンク