Java MaskFormatter可以采用任何尺寸,还是仅采用您提供的尺寸?
我想将输入限制在我的Java MaskFormatter可以采用任何尺寸,还是仅采用您提供的尺寸?,java,swing,jformattedtextfield,maskformatter,Java,Swing,Jformattedtextfield,Maskformatter,我想将输入限制在我的JFormattedTextField,我有一个使用MaskFormatter的设置 但是,我必须输入指定的字符数(在本例中为5)。有没有一种方法可以让它接受任何大小的输入,并且仍然将输入限制为小写字符?或者我应该为我的目的使用不同的类 下面是我目前拥有的 我的目标是有两个文本框输入,并比较它们之间的文本输入 //This formatter allows for up to a 10 character word. //No spaces allowed.
JFormattedTextField
,我有一个使用MaskFormatter
的设置
但是,我必须输入指定的字符数(在本例中为5)。有没有一种方法可以让它接受任何大小的输入,并且仍然将输入限制为小写字符?或者我应该为我的目的使用不同的类
下面是我目前拥有的
我的目标是有两个文本框输入,并比较它们之间的文本输入
//This formatter allows for up to a 10 character word.
//No spaces allowed.
MaskFormatter leftMask = null;
try {
leftMask = new MaskFormatter("LLLLL");
leftMask.setInvalidCharacters("1234567890 ");
leftMask.setOverwriteMode(false);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MaskFormatter rightMask = null;
try {
rightMask = new MaskFormatter("LLLLL");
rightMask.setInvalidCharacters("1234567890 ");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Initialize components
leftTextField = new JFormattedTextField(leftMask);
rightTextField = new JFormattedTextField(rightMask);
submitButton = new JButton("Submit");
submitButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
InputReader reader = new InputReader();
result.setText("These two strings are:");
if(reader.readInput(leftTextField.getText(), rightTextField.getText())){
result.append(" a match");
}
else{
result.append(" not a match");
}
}
});
如果我理解正确的话,你可以写一个方法,比如
public static String generateFormat(char with, int count) {
return String.format("%" + count + "s", "").replaceAll(" ", Character.toString(with));
}
leftMask = new MaskFormatter(generateFormat('L', 5));
基本上,这将允许您生成一个字符串
,填充的值,并使用
对字符进行计数,类似于
public static String generateFormat(char with, int count) {
return String.format("%" + count + "s", "").replaceAll(" ", Character.toString(with));
}
leftMask = new MaskFormatter(generateFormat('L', 5));
现在,这不是一个完美的解决方案,更好的解决方案可能是使用DocumentFilter
,它可以让您完全控制用户可以实时输入的数量和内容
查看和了解更多详细信息。因此,尽管此方法有效,MaskFormatter仍然要求输入的字符必须全部为5个(或您选择的任何数字)。如果不是,它就是不接受输入。我的问题是它应该接受输入,不管它是否是最大字符数。我也会看看你提供的链接。谢谢你的回复!这就是为什么我要转储格式化字段并使用JTextField和DocumentFilter