|  
      JavaTM Platform Standard Ed. 6  |  
    |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.swing.JFormattedTextField.AbstractFormatter
javax.swing.text.DefaultFormatter
javax.swing.text.MaskFormatter
public class MaskFormatter
      MaskFormatter 用于格式化和编辑字符串。MaskFormatter 的行为通过 String 掩码控制,该掩码指定可以包含在 Document 模型中特定位置的有效字符。可以指定以下字符: 
| 字符 | 描述  |  
    
|---|---|
| # | 任何有效数字,使用 Character.isDigit。 |  
    
| ' | 转义字符,用于避开任何具有特殊格式的字符。 | 
| U | 任何字符 (Character.isLetter)。将所有小写字母映射为大写。 |  
    
| L | 任何字符 (Character.isLetter)。将所有大写字母映射为小写。 |  
    
| A | 任何字符或数字(Character.isLetter 或 Character.isDigit) |  
    
| ? | 任何字符 (Character.isLetter)。 |  
    
| * | 所有字符。 | 
| H | 任何十六进制字符(0-9、a-f 或 A-F)。 | 
字符通常对应于一个 char,但在某些语言中不是这样。掩码是以单个字符为基础的,因此可以任意调整 char 数量来满足需要。
 可以进一步限制可通过 setInvalidCharacters 和 setValidCharacters 方法输入的字符。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)),则在编辑时将根据需要跳过字面值字符。假定 MaskFormatter 带有掩码 "###-####",且当前值为 "555-1212"。使用右箭头键通过字段导航将生成(| 指示插入符的位置): 
|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 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder。 
| 构造方法摘要 | |
|---|---|
MaskFormatter() 创建一个不带掩码的 MaskFormatter。  |  
    |
MaskFormatter(String mask) 创建具有指定掩码的 MaskFormatter。 |  
    |
| 方法摘要 | |
|---|---|
  String |  
     getInvalidCharacters() 返回输入无效的字符。  |  
    
  String |  
     getMask() 返回格式化掩码。  |  
    
  String |  
     getPlaceholder() 如果值未完全填充掩码,则返回要使用的 String。  |  
    
  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 的适当 Object 表示形式。 |  
    
  String |  
     valueToString(Object value) 返回基于掩码的 Object value 的 String 表示形式。 |  
    
| 从类 javax.swing.JFormattedTextField.AbstractFormatter 继承的方法 | 
|---|
getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall |  
    
| 从类 java.lang.Object 继承的方法 | 
|---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |  
    
| 构造方法详细信息 | 
|---|
public MaskFormatter()
public MaskFormatter(String mask)
              throws ParseException 
  MaskFormatter。如果 
    mask 不是有效掩码,则抛出 
    ParseException。 
    
ParseException - 如果掩码不包含有效掩码字符
     | 方法详细信息 | 
|---|
public void setMask(String mask)
             throws ParseException 
  mask 无效,这将抛出一个 
    ParseException。 
    
ParseException - 如果掩码不包含有效掩码字符
     public String getMask()
public void setValidCharacters(String validCharacters)
invalidCharacters,而是 
    validCharacters)字符。传入 null(默认)意味着有效字符只由掩码和无效字符限定范围。 
    
validCharacters - 如果为非 null,则指定合法字符。
     public String getValidCharacters()
public void setInvalidCharacters(String invalidCharacters)
invalidCharacters,而是 
    validCharacters)字符。传入 null (默认)意味着有效字符只由掩码和有效字符限定范围。 
    
invalidCharacters - 如果为非 null,则指定非法字符。
     public String getInvalidCharacters()
public void setPlaceholder(String placeholder)
placeholder - 值未完全填充掩码的情况下格式化时使用的字符串
     public String getPlaceholder()
public void setPlaceholderCharacter(char placeholder)
此方法仅适用于占位符字符串尚未指定,或未完全填充掩码的情况。
placeholder - 如果值未完全填充掩码,则为格式化时使用的 Character
     public char getPlaceholderCharacter()
public void setValueContainsLiteralCharacters(boolean containsLiteralChars)
 例如,如果掩码为 '(###) ###-####',当前值为 '(415) 555-1212',且 valueContainsLiteralCharacters 为 true,则 stringToValue 将返回 '(415) 555-1212'。另一方面,如果 valueContainsLiteralCharacters 为 false,则 stringToValue 将返回 '4155551212'。 
containsLiteralChars - 用于指示掩码中的字面值是否应该在 stringToValue 中返回。
     public boolean getValueContainsLiteralCharacters()
stringToValue 应该返回掩码中的字面值,则返回 true。 
    
public Object stringToValue(String value)
                     throws ParseException 
  value 的适当 Object 表示形式。此方法将在必要时将字面值字符分开并调用超类 
    stringToValue,所以,如果已指定了值类 (
    setValueClass),则将创建它的一个实例。如果该值与当前掩码不匹配,这将抛出一个 
    ParseException。有关如何处理字面值的详细信息,请参阅 
    setValueContainsLiteralCharacters(boolean)。 
    
DefaultFormatter 中的 
      stringToValue
     value - 要转换的字符串 
     ParseException - 如果在转换时发生错误
     setValueContainsLiteralCharacters(boolean)
     
public String valueToString(Object value)
                     throws ParseException 
  value 的 String 表示形式。有关如何处理字面值的详细信息,请参阅 
    setValueContainsLiteralCharacters(boolean)。 
    
DefaultFormatter 中的 
      valueToString
     value - 要转换的 Value 
     ParseException - 如果在转换时发生错误
     setValueContainsLiteralCharacters(boolean)
     public void install(JFormattedTextField ftf)
DefaultFormatter 安装在特定的 
    JFormattedTextField 上。这将调用 
    valueToString,将 
    JFormattedTextField 中的当前值转换为 String。此方法稍后将会把 
    getActions 返回的 
    Action、
    getDocumentFilter 返回的 
    DocumentFilter 和 
    getNavigationFilter 返回的 
    NavigationFilter 安装到 
    JFormattedTextField 上。 
     如果子类希望在 JFormattedTextField 上安装其他侦听器,则通常只需要重写此方法。 
 如果在将当前值转换为 String 时存在 ParseException,则这会将文本设置为空 String,并将 JFormattedTextField 标记为正处在无效状态。 
 尽管这是一个公共方法,但通常仅供 JFormattedTextField 的子类使用。当值发生更改,或内部状态发生更改时,JFormattedTextField 将在适当的时候调用此方法。 
DefaultFormatter 中的 
      install
     ftf - 要格式化为的 JFormattedTextField,可以为 null,这指示从当前的 JFormattedTextField 卸载。
      
        
      
  |  
      JavaTM Platform Standard Ed. 6  |  
    |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。