这是代码的例子:
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
,它增加了一个空格,如何解决?
感谢名单
答案 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
的对象数组。上面格式说明符中的2
和000
告诉它默认格式化带前导零的数字(尽管用户不需要输入它们来进行有效输入)。但是您可以将其更改为0000
以获得紧凑的数字。