我可以为JFormattedText定义长度吗?

时间:2018-06-21 03:29:58

标签: java swing jformattedtextfield

例如,如何为门牌号创建一个掩码?我可以将JFormattedText与'####'一起使用,但这将定义我的文本为4位数字,相反,如果我使用JTextField,则需要一些脚本和过程来验证用户正在写。因此,重点是是否存在中间解决方案。就像一个面具,只说数字,长度为1到3、4,n ...

4 个答案:

答案 0 :(得分:1)

您可以对JTextField使用inputMethodTextChanged。 捕捉输入并格式化为您想要的任何内容! 有详细信息formattedtextfield: https://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html

答案 1 :(得分:0)

您可以将NumberFormatter设置为JFormattedTextField。在那里您可以设置最小值,最大值,并将值类别设置为Interger.class

答案 2 :(得分:0)

这应该可以在NumberFormatsetMaximumIntegerDigits中进行设置,因为您可以使用JFormattedTextField构造函数,将{{1}一个争论。

以下是您遇到的情况的示例:

Format

答案 3 :(得分:0)

  

如果您输入“ 321”并转到下一个字段,则您的JFormattedText将删除它

设置焦点丢失行为:

MaskFormatter format1 = new MaskFormatter("****");
format1.setValidCharacters("123456789");
JFormattedTextField textField1 = new JFormattedTextField( format1 );
textField1.setFocusLostBehavior(JFormattedTextField.COMMIT);