我使用以下代码在我的MaskFormatter上应用JFormattedTextField,以便使它接受IBANs (2个字母,后面是20个数字):
MaskFormatter formatter = new MaskFormatter("UU## #### #### #### #### ##");
formatter.setPlaceholderCharacter('_');
jFormattedTextField.setFormatterFactory(new DefaultFormatterFactory(formatter));每当该文本字段中有一个空空间时,占位符字符('_')就会如愿以偿地保存该位置。但是,一旦您将一个不同的文本字段聚焦,该字段将检查内部的字符串是否有效,否则将重新设置它。但是,如果它看起来是这样的话,我不希望它改变--例如:
AA00 11_1 2222 ____ 4444 5555 66
为了实现这一点,我必须允许占位符字符作为每个位置上的有效MaskCharacter。这可以通过复制整个类和修改isValidCharacter()来实现,但这是很脏的。
有没有办法做这样的事?:
new MaskFormatter("[U^_][U^_][#^_][#^_] [#^_][#^_][#^_][#^_] [#^_][#^_][#^_][#^_] ...");或者像formatter.allowCharacter('_')这样的东西
它使用“*,但这并不强迫用户在给定位置输入有效字符,所以这不是我想要的。
发布于 2018-08-16 10:25:28
方法isValidCharacter()查找下面的验证方法。我想,在下面的方法中设置适当的值就足够了。
formatter.setValidCharacters("")
formatter.setInvalidCharacters("")https://stackoverflow.com/questions/51873562
复制相似问题