我正在使用java开发一个桌面应用程序,现在我正在注册人员数据。 person表单的一个字段是“DocumentTextField”,它包含Identification Document和Number,这就是为什么我尝试使用JFormattedTextField掩码来帮助用户使用该字段的格式。
基本上,我只是使用AbstracFormatterFactory来创建遮罩:
Mask = UU - ##########得到类似的东西(PP-0123456789)
它确实可以正常工作,用户只需键入“pp0123456789”并且掩码变为“PP-0123456789”,这个点就是数字长度,正如你在我的面具上看到的那样,我声明了10个数字(# #########)但事实上,它可能低于10个数字甚至更高。它仅适用于10个数字,如果用户类型低于10个数字,则JFormattedTextField重新设置为空,如果用户键入的数字超过10个,则会发生同样的事情。
有没有办法声明这个范围(数字长度)?一些文件只有5个数字(PP-01234)。
通过阅读本文并尝试提供帮助,非常感谢你。
答案 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方法可以帮助您解决问题。