概要

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 in GitHub: Java, Kotlin

解説

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

参考リンク

コメント