• 追加された行はこの色です。
  • 削除された行はこの色です。
---
category: swing
folder: MaskFormatterPlaceholder
title: JFormattedTextFieldにプレースホルダ文字列を追加したMaskFormatterを設定する
tags: [JFormattedTextField, MaskFormatter, FormatterFactory]
author: aterai
pubdate: 2017-03-13T14:44:45+09:00
description: JFormattedTextFieldにプレースホルダ文字やプレースホルダ文字列を追加したMaskFormatterを設定します。
image: https://drive.google.com/uc?export=view&id=1jr_CEn9HFdHVL7hiYobxNFuuuVvnlXuyrA
---
* 概要 [#summary]
`JFormattedTextField`にプレースホルダ文字やプレースホルダ文字列を追加した`MaskFormatter`を設定します。

#download(https://drive.google.com/uc?export=view&id=1jr_CEn9HFdHVL7hiYobxNFuuuVvnlXuyrA)

* サンプルコード [#sourcecode]
#code(link){{
MaskFormatter formatter2 = new MaskFormatter(mask);
formatter2.setPlaceholderCharacter('_');
formatter2.setPlaceholder("000-0000");
field2.setFormatterFactory(new DefaultFormatterFactory(formatter2));
}}

* 解説 [#explanation]
- `new MaskFormatter("###-####")`
-- プレースホルダなしの`MaskFormatter`を設定
- `MaskFormatter#setPlaceholderCharacter('_')`
-- プレースホルダ文字として`_`を設定
- `MaskFormatter#setPlaceholder("000-0000")`
-- プレースホルダ文字として`_`を、プレースホルダ文字列として`000-0000`を設定
-- プレースホルダ文字と違って、プレースホルダ文字列は初回のみ使用される

----
- メモ
- [https://bugs.openjdk.java.net/browse/JDK-6462028 JDK-6462028 MaskFormatter API documentation refers to getDisplayValue - Java Bug System]
-- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/MaskFormatter.html MaskFormatter (Java Platform SE 8)]
-- ドキュメントには`formatter.getDisplayValue(tf, "123");`との例があるが、`getDisplayValue(...)`というメソッドは存在しない
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JFormattedTextField.html#JFormattedTextField-- JFormattedTextField (Java Platform SE 8)]
-- 「特定の型の値を編集するように`JFormattedTextField`を設定する場合は、`setMask`または`setFormatterFactory`を使用してください。」とあるが、`JFormattedTextField`に`setMask`というメソッドは存在しない
-- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/MaskFormatter.html#setMask-java.lang.String- MaskFormatter#setMask(String)]のことかもしれない
-- [https://bugs.openjdk.java.net/browse/JDK-6462028 JDK-6462028 MaskFormatter API documentation refers to getDisplayValue - Java Bug System]
--- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/MaskFormatter.html MaskFormatter (Java Platform SE 8)]
--- ドキュメントには`formatter.getDisplayValue(tf, "123");`とのコード例があるが、`MaskFormatter#getDisplayValue(...)`というメソッドは存在しない
-- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JFormattedTextField.html#JFormattedTextField-- JFormattedTextField (Java Platform SE 8)]
--- 「特定の型の値を編集するように`JFormattedTextField`を設定する場合は、`setMask`または`setFormatterFactory`を使用してください。」とあるが、`JFormattedTextField`に`setMask`というメソッドは存在しない
--- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/MaskFormatter.html#setMask-java.lang.String- MaskFormatter#setMask(String)]のことかもしれない

* 参考リンク [#reference]
- [https://bugs.openjdk.java.net/browse/JDK-6462028 JDK-6462028 MaskFormatter API documentation refers to getDisplayValue - Java Bug System]

* コメント [#comment]
#comment
#comment