• category: swing folder: FocusLostBehavior title: JFormattedTextFieldからフォーカスが失われた場合の処理を設定する tags: [JFormattedTextField, Focus] author: aterai pubdate: 2017-01-09T03:41:25+09:00 description: JFormattedTextFieldからフォーカスが失われた場合に実行するアクションを設定してテストします。 image: https://drive.google.com/uc?export=view&id=1v2TdYvIAIuNFlxDutW3g3476R3mqqff2rQ

概要

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

解説

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

参考リンク

コメント