概要

JFormattedTextFieldからフォーカスが失われた場合に実行するアクションを設定してテストします。

サンプルコード

JFormattedTextField ftf = new JFormattedTextField();
try {
  MaskFormatter formatter = new MaskFormatter("UUUUUUUUUU");
  ftf.setFormatterFactory(new DefaultFormatterFactory(formatter));
  ftf.setFocusLostBehavior(JFormattedTextField.COMMIT)
} catch (ParseException ex) {
    ex.printStackTrace();
}
view all

解説

  • JFormattedTextField.COMMIT_OR_REVERT
    • JFormattedTextFieldのデフォルト
    • フォーカスが失われたとき、正当な値の場合は値を確定し、不当な場合は前回値に戻す
  • JFormattedTextField.REVERT
    • フォーカスが失われたとき、常に前回値に戻す
    • 編集を確定するにはJFormattedTextField#commitEdit()を自前で呼ぶか、DefaultFormatter#setCommitsOnValidEdit(true)と設定(文字列が編集されるたびにcommitEditが自動的に呼び出される)する必要がある
  • JFormattedTextField.COMMIT
    • フォーカスが失われたとき、現在の値を確定する
    • 現在の値が正当な値でない場合でも、その値がそのまま残る
  • JFormattedTextField.PERSIST
    • フォーカスが失われたとき、何も処理しない

参考リンク

コメント