質問

dd/MM/yyyy 形式の日付を使用するように JFormattedTextField を作成するのに苦労しています。具体的には、ユーザーが入力すると、カーソルがスラッシュを「ジャンプ」して、次の番号の位置に直接移動する必要があります。

また、JFormattedTextField は、入力された日付が有効かどうかを検証し、日付が無効な場合は何らかの方法で拒否するか、有効な日付に「修正」する必要があります。たとえば、ユーザーが月として「13」を入力した場合は、それを「01」に設定します。 」と入力し、年に +1 を加えます。

JFormattedTextField の validate() メソッドでマスク ("##/##/####") を使用して日付が有効かどうかを確認しようとしましたが、これら 2 つはうまく連携していないようです (または、 Java に関してはあまりにもグリーンなので、その方法がわかりません...:) その後、ユーザーはフィールドに何かを入力できるようになります。

ご協力をよろしくお願いいたします。ありがとう!

役に立ちましたか?

解決

通常の JTextField を使用し、カスタム ドキュメントで setDocument() を呼び出す必要がある場合があります。PlainDocument を拡張することをお勧めします。これにより、ドキュメントの変更時に入力を検証し、必要に応じてスラッシュを追加することが簡単になります。

他のヒント

JCalendarを使ってみる

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top