Q4:日付入力フィールドおよび数値入力フィールドの動作について
Q4-1:
下記手順を行った際の動作に気になる点が御座いますので質問いたします。
1.一度何らかの日付或いは数値をフィールドに入力し、一旦フォーカスアウトします。
2.その後もう一度その入力フィールドに戻り、入力した値を削除(BackSpaceキー押下)して再度フォーカスアウトします。
上記の操作を行うと、2の後に1で入力した値が自動的に再入力(?)されます。入力フィールドに対しては何もイベントの設定はしておりません。開発環境はMZ2.3です。
A4-1:
[日付入力フィールド]、[数値入力フィールド]では、キーボードから入力しただけでは値は未確定で、Enterキーを押した時あるいはフォーカスを失った時に値が初めて確定されます。
動作1で先に値が確定されましたが、動作2では「空白文字列(フィールドにとっては不正な値)を確定しようとした」ことになります。
フォーカスを失った後の動作は「FocusLostBehavior」のモードにより以下のように変わります。(メソッドや属性情報の設定で変更することもできます)
0:値を確定。確定できない場合でも表示はそのまま
1:値を確定。確定できない場合は現在の値に表示を変更。デフォルト値
2:現在の値に表示を変更
3:表示されている文字列のまま(値は確定されない)
このため先に動作1で確定された値が表示されているものと思われます。
こちらの属性はjavaの「JFormattedField」に拠っていますので、詳しくは下記のJavadocをご覧下さい。
http://www.j2ee.me/javase/ja/6/docs/ja/api/javax/swing/JFormattedTextField.html
備考:「数値入力フィールド」の「Q&A5」にも掲載。