如何删除JFormattedTextField中的空格?

时间:2013-11-15 17:18:25

标签: java swing jformattedtextfield

这是代码的例子:

private JFormattedTextField jftf2 = new JFormattedTextField();
try{
    MaskFormatter mask = new MaskFormatter("###-####");
    mask.install(jftf2);
}catch(ParseException e){e.printStackTrace();}

当我执行它时,它显示3个空格然后' - '然后是4个空格,我想知道如何不拥有这些空格,一个简单的空文本字段,只接收我写的字符。我知道有一个方法mask.setPlaceholderCharacter(' ');可以将空间更改为另一个角色,但我只想删除它,而不是更改它。

另一个问题是在更改文本时,例如,让我们使用相同的掩码###-####,字符串111-1234在该掩码中有效,但当我删除3例如,它显示111-12 4而不是111-124,它增加了一个空格,如何解决?

感谢名单

1 个答案:

答案 0 :(得分:2)

目前还不太清楚你想要什么,因为使用MaskFormatter并抱怨它的行为类似于MaskFormatter有点奇怪。但也许你想做这样的事情:

JFormattedTextField jftf2 = new JFormattedTextField();
final InternationalFormatter fmt=new InternationalFormatter(
  new MessageFormat("{0,number,000}-{1,number,0000}"));
jftf2.setFormatterFactory(new JFormattedTextField.AbstractFormatterFactory() {
  public JFormattedTextField.AbstractFormatter
                                         getFormatter(JFormattedTextField tf) {
    return fmt;
  }
});
jftf2.setValue(new Object[]{111,1234});

使用此格式,value的{​​{1}}属性将表示为包含两个数字的长度为JFormattedTextField的对象数组。上面格式说明符中的2000告诉它默认格式化带前导零的数字(尽管用户不需要输入它们来进行有效输入)。但是您可以将其更改为0000以获得紧凑的数字。