public class MaskFormatter extends DefaultFormatter
MaskFormatter用于格式化和编辑字符串。 
       MaskFormatter的行为是通过String mask来控制的,该掩码指定了可以包含在Document模型中特定位置的有效字符。 
       可以指定以下字符: 
         Character  描述
# Any valid number, usesCharacter.isDigit.   ' Escape character, used to escape any of the special formatting characters.   U Any character (Character.isLetter). All lowercase letters are mapped to upper case.   L Any character (Character.isLetter). All upper case letters are mapped to lower case.   A Any character or number (Character.isLetter or Character.isDigit)   ? Any character (Character.isLetter).   * Anything.   H Any hex character (0-9, a-f or A-F).   
       通常字符对应于一个字符,但在某些语言中并不是这样。 面具是以每个字符为基础的,因此将调整为适合所需的许多字符。
 您可以进一步限制setInvalidCharacters和setValidCharacters方法可以输入的setInvalidCharacters 。 setInvalidCharacters允许您指定哪些字符不合法。 setValidCharacters允许您指定哪些字符有效。 例如,以下代码块相当于没有无效/有效字符的'0xHHH'掩码。 
  MaskFormatter formatter = new MaskFormatter("0x***");
 formatter.setValidCharacters("0123456789abcdefABCDEF");  
       当最初格式化一个值,如果字符串的长度小于掩码的长度,可以发生两件事情。 将使用占位符字符串,否则将使用占位符字符。 优先级被赋予占位符字符串。 例如:
  MaskFormatter formatter = new MaskFormatter("###-####");
   formatter.setPlaceholderCharacter('_');
   formatter.getDisplayValue(tf, "123");  
        会导致字符串'123 -____'。 如果setPlaceholder("555-1212")被调用'123-1212'将导致。 占位符字符串仅用于初始格式,后续格式仅使用占位符字符。 
 如果MaskFormatter配置为仅允许有效字符( setAllowsInvalid(false) ),则编辑时将根据需要跳过字面字符。 考虑一个带有“### - ####”和当前值“555-1212”的MaskFormatter 。 使用右箭头键浏览该字段将导致(|表示插入符的位置): 
  |555-1212
   5|55-1212
   55|5-1212
   555-|1212
   555-1|212  
       ' - '是一个字面(不可编辑)字符,并被跳过。 
        编辑时会产生类似的行为。 考虑将字符串'123-45'和'12345'插入上一个示例中的MaskFormatter 。 两个插入将导致相同的字符串'123-45__'。 当MaskFormatter正在处理字符位置3(' - ')的插入时,可能会发生两件事情: 
 默认情况下, MaskFormatter不允许无效编辑,您可以使用setAllowsInvalid方法更改此内容,并将对有效的编辑进行编辑(使用setCommitsOnValidEdit更改此内容)。 
 默认情况下, MaskFormatter处于覆盖模式。 就是说,键入的字符不会插入一个新的字符,而是当前位置的字符被替换为新键入的字符。 您可以通过方法setOverwriteMode更改此行为。 
 警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,支持所有JavaBeans的长期存储已被添加到java.beans包中。 请参阅XMLEncoder 。 
| Constructor and Description | 
|---|
| MaskFormatter()
              创建一个没有掩码的MaskFormatter。 
             | 
| MaskFormatter(String mask)
              用指定的掩码创建一个 
              MaskFormatter。 | 
| Modifier and Type | Method and Description | 
|---|---|
| String | getInvalidCharacters()
              返回对输入无效的字符。 
             | 
| String | getMask()
              返回格式化掩码。 
             | 
| String | getPlaceholder()
              如果值未完全填写掩码,则返回要使用的字符串。 
             | 
| char | getPlaceholderCharacter()
              返回要用于代替值中不存在的字符的字符,即用户必须填写它们。 
             | 
| String | getValidCharacters()
              返回可以输入的有效字符。 
             | 
| boolean | getValueContainsLiteralCharacters()
              如果 
              stringToValue应该返回掩码中的文字字符,则返回true。 | 
| void | install(JFormattedTextField ftf)
              将 
              DefaultFormatter安装到特定的JFormattedTextField。 | 
| void | setInvalidCharacters(String invalidCharacters)
              允许进一步限制可以输入的字符。 
             | 
| void | setMask(String mask)
              设置掩码规定合法字符。 
             | 
| void | setPlaceholder(String placeholder)
              如果值未完全填写掩码,则设置要使用的字符串。 
             | 
| void | setPlaceholderCharacter(char placeholder)
              设置要使用的字符代替值中不存在的字符,即用户必须填写它们。 
             | 
| void | setValidCharacters(String validCharacters)
              允许进一步限制可以输入的字符。 
             | 
| void | setValueContainsLiteralCharacters(boolean containsLiteralChars)
              如果为true,则返回的值和设置值也将包含掩码中的文字字符。 
             | 
| Object | stringToValue(String value)
              解析文本,返回String 
              value的相应对象表示value。 | 
| String | valueToString(Object value)
              根据掩码返回Object 
              value的String表示形式。 | 
clone, getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClassgetActions, getFormattedTextField, invalidEdit, setEditValid, uninstallpublic MaskFormatter()
public MaskFormatter(String mask) throws ParseException
MaskFormatter 。 
           一个ParseException如果将抛出mask是无效的面具。 
          ParseException - 如果mask不包含有效的掩码字符 
           public void setMask(String mask) throws ParseException
mask无效,将会抛出ParseException 。 
          ParseException - 如果mask不包含有效的掩码字符 
           public String getMask()
public void setValidCharacters(String validCharacters)
invalidCharacters不能在invalidCharacters和validCharacters中被允许输入。 
           传入null(默认)意味着有效的字符只受掩码和无效字符的约束。 
          validCharacters - 如果非空,则指定合法字符。 
           public String getValidCharacters()
public void setInvalidCharacters(String invalidCharacters)
invalidCharacters不能在invalidCharacters和validCharacters中被允许输入。 
           传入null(默认值)意味着有效字符只受掩码和有效字符的约束。 
          invalidCharacters - 如果非空,则指定非法字符。 
           public String getInvalidCharacters()
public void setPlaceholder(String placeholder)
placeholder - 如果值未完全填写掩码,则在格式化时使用的字符串 
           public String getPlaceholder()
public void setPlaceholderCharacter(char placeholder)
仅当尚未指定占位符字符串或者未完全填写掩码时,才适用。
placeholder - 格式化时使用的字符,如果该值未完全填满该掩码 
           public char getPlaceholderCharacter()
public void setValueContainsLiteralCharacters(boolean containsLiteralChars)
 例如,如果掩码为'(###) ###-####' ,则当前值为'(415) 555-1212' ,而valueContainsLiteralCharacters为真stringToValue将返回'(415) 555-1212' 。 另一方面,如果valueContainsLiteralCharacters是假的, stringToValue将返回'4155551212' 。 
containsLiteralChars - 用于指示是否应在stringToValue中返回掩码中的字符字符 
           public boolean getValueContainsLiteralCharacters()
stringToValue应该返回掩码中的文字字符,则返回true。 
          public Object stringToValue(String value) throws ParseException
value的相应对象表示value 。 
           这将根据需要剥离文字字符,并调用超级stringToValue ,以便如果您指定了一个值类( setValueClass ),则会创建一个实例。 
           如果该值与当前掩码不匹配,则会抛出ParseException 。 
           有关如何处理文字的详细信息,请参阅setValueContainsLiteralCharacters(boolean) 。 
          stringToValue在 
            DefaultFormatter 
           value - 要转换的字符串 
           ParseException - 转换中是否有错误 
           setValueContainsLiteralCharacters(boolean) 
           public String valueToString(Object value) throws ParseException
value的String表示形式。 
           有关如何处理文字的详细信息,请参阅setValueContainsLiteralCharacters(boolean) 。 
          valueToString中的 
            DefaultFormatter 
           value - 要转换的价值 
           ParseException - 转换中是否有错误 
           setValueContainsLiteralCharacters(boolean) 
           public void install(JFormattedTextField ftf)
DefaultFormatter安装到特定的JFormattedTextField 。 
           这将调用valueToString将当前值从JFormattedTextField转换为字符串。 
           那么这将安装Action从s getActions ,该DocumentFilter从返回getDocumentFilter和NavigationFilter从返回getNavigationFilter到JFormattedTextField 。 
            子类通常只需要覆盖这个,如果他们希望在JFormattedTextField上安装其他监听JFormattedTextField 。 
 如果有一个ParseException将当前值转换为字符串,则将文本设置为空字符串,并将JFormattedTextField标记为无效状态。 
 虽然这是一种公共方法,但这通常仅适用于JFormattedTextField的JFormattedTextField 。 JFormattedTextField将在值更改或其内部状态更改的适当时候调用此方法。 
install在 
            DefaultFormatter 
           ftf - JFormattedTextField格式化,可能为null表示从当前JFormattedTextField卸载。 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.