3

そのため、私はスイングを使用しており、テキスト フィールドに遅延を導入するためのクリーンな (CPU を占有しない) 方法を見つける必要があります。基本的に、ユーザーはこのフィールドに数値を入力します。keyReleased() イベントは、入力がいくつかのパラメーターに適合することを確認し、その値をプログラム内のデータ ストレージ要素に割り当てます。データが無効な場合は、メッセージが表示されます。文字を入力するたびにルーチンが呼び出されるため (非常に速く入力しない限り)、入力プロセスは非常に煩雑になります (一般に、1 文字または 2 文字のデータは許可されたパラメーターに適合しないため)。

タイマー オブジェクトとそのタイマー タスクを設定しようとしましたが、うまく機能していないようです (プログラムが実行されているスレッドを遅延させるため)。データが特定の長さに達するまで待機するオプションも、(前の状態のように) 入力の長さが異なる可能性があるため、使用できません。

誰でもアイデアはありますか?ありがとう!

4

2 に答える 2

4

私はこのようなことをかなり頻繁に行ってきましたが、2 つの提案があります。

これを処理する標準的な方法は、InputVerifier クラスを使用することです。ただし、これは入力コンポーネントがフォーカスを失った場合にのみ機能します。無効な入力フィールドからユーザーがナビゲートするのを防ぐように設計されていますが、それまでチェックしません。

私がこれを行ったもう 1 つの方法は、キーストロークごとに有効性をチェックすることですが、無効な場合はメッセージを表示しません。代わりに、色を使用して有効性を示します。たとえば、無効な場合は赤く、有効な場合は黒くします。これは、メッセージほど煩わしいものではありません。ツールチップを使用して、より詳細なフィードバックを提供できます。

これらの方法を組み合わせることもできます。

于 2010-03-23T20:02:51.970 に答える
3

カスタム DocumentFilter を記述します。詳細については、テキスト コンポーネントの機能に関する Swing チュートリアルのセクションを参照してください。

于 2010-03-23T20:06:53.553 に答える