例如,如何为门牌号创建一个掩码?我可以将JFormattedText
与'####'一起使用,但这将定义我的文本为4位数字,相反,如果我使用JTextField
,则需要一些脚本和过程来验证用户正在写。因此,重点是是否存在中间解决方案。就像一个面具,只说数字,长度为1到3、4,n ...
答案 0 :(得分:1)
您可以对JTextField使用inputMethodTextChanged。 捕捉输入并格式化为您想要的任何内容! 有详细信息formattedtextfield: https://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html
答案 1 :(得分:0)
您可以将NumberFormatter
设置为JFormattedTextField
。在那里您可以设置最小值,最大值,并将值类别设置为Interger.class
。
答案 2 :(得分:0)
这应该可以在NumberFormat和setMaximumIntegerDigits中进行设置,因为您可以使用JFormattedTextField构造函数,将{{1}一个争论。
以下是您遇到的情况的示例:
Format
答案 3 :(得分:0)
如果您输入“ 321”并转到下一个字段,则您的JFormattedText将删除它
设置焦点丢失行为:
MaskFormatter format1 = new MaskFormatter("****");
format1.setValidCharacters("123456789");
JFormattedTextField textField1 = new JFormattedTextField( format1 );
textField1.setFocusLostBehavior(JFormattedTextField.COMMIT);