JFormattedTextField掩码Java的数字长度

时间:2018-03-21 21:55:35

标签: java swing mask jformattedtextfield

我正在使用java开发一个桌面应用程序,现在我正在注册人员数据。 person表单的一个字段是“DocumentTextField”,它包含Identification Document和Number,这就是为什么我尝试使用JFormattedTextField掩码来帮助用户使用该字段的格式。

基本上,我只是使用AbstracFormatterFactory来创建遮罩:

Mask = UU - ##########得到类似的东西(PP-0123456789)

它确实可以正常工作,用户只需键入“pp0123456789”并且掩码变为“PP-0123456789”,这个点就是数字长度,正如你在我的面具上看到的那样,我声明了10个数字(# #########)但事实上,它可能低于10个数字甚至更高。它仅适用于10个数字,如果用户类型低于10个数字,则JFormattedTextField重新设置为空,如果用户键入的数字超过10个,则会发生同样的事情。

有没有办法声明这个范围(数字长度)?一些文件只有5个数字(PP-01234)。

通过阅读本文并尝试提供帮助,非常感谢你。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用Java 8进行开发。您是否看到过任何类型的ParseException

根据组件的文档:https://docs.oracle.com/javase/8/docs/api/javax/swing/text/MaskFormatter.html

  

如果字符串的长度小于掩码的长度,最初格式化值时,可能会发生两件事。将使用占位符字符串,或者将使用占位符字符。优先权是占位符字符串。

根据例子:

MaskFormatter formatter = new MaskFormatter("###-####");
formatter.setPlaceholderCharacter('_');

setPlaceHolderCharacter方法可以帮助您解决问题。