1

即時入力を完全に制御したいJTextField場所(またはフォーカスとカーソルをサポートする別のテキストのような入力-または自分でコーディングする必要がありますか?)が必要です。つまり、ほとんどの入力を無視し、残りを具体的に処理したいと思います。すぐに入力するのではなく、フォーカスが失われたときに検証を行うので、私が望んでいることでJFormattedTextFieldはないようです。

キーリスナーを追加しようとしましたが、どのように使用すればよいかは少しわかりません。カーソルの変更(キーを使用)やコピー/貼り付け(キーのショートカットを使用)などのイベントをキャッチkeyPressedでき、通常のキー入力をすべてキャッチできるようkeyTypedです。カーソルの変更やマウスによるコピー/貼り付けをキャッチする方法がわかりません(何らかの理由で、右クリックが機能しないため、コンテキストメニューでマウスを介してコピー/貼り付けすることはできないようですが、それが可能かどうかはわかりません別の問題であるか、それが機能するはずで、何らかの理由で機能しない場合)。

基本的に次のハンドラーのようなものが必要です。

interface InputHandler {
   void addStringAt(int pos, String s);
   void deleteSubString(int pos, int len);
   void setFocusTo(int pos);
}

また、ユーザーがこのハンドラーを経由しないものをテキストボックスに取り込むことは絶対に不可能です。

今のところ、私は多くの特定のケースに注意を払う必要があるようです(一部のアーキテクチャでは、何かをコピー/貼り付けまたは入力したり、すべてのマウスイベントを手動で処理したりできるコンテキストメニューがある場合があります)。

または、他の方法でも、多くの特別な処理が必要です。そのような入力フィールドを自分で再コーディングすること。ユーザーがハンドラーをバイパスする方法をトリッキーな方法がないことを確実に知ることができるので、これはまだ節約のようです(そして私は本当にそれを確実に知っている必要があります)。ところで、私はこれをどのように行うのですか?を拡張することを考えましたJLabel。フォーカスを取得できるように拡張するにはどうすればよいですか?

このようなものをどのように実装するのだろうか。

4

1 に答える 1

1

が必要なようですDocumentFilter。これに役立ついくつかの既存の質問:

于 2010-10-16T13:35:44.440 に答える