我想将我的输入限制在我的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");
}
}
});发布于 2014-09-03 09:36:36
如果我对问题的理解正确,你可以写一个方法,它做了类似于...
public static String generateFormat(char with, int count) {
return String.format("%" + count + "s", "").replaceAll(" ", Character.toString(with));
}基本上,这将允许您生成一个用字符的count的with值填充的String,类似于...
leftMask = new MaskFormatter(generateFormat('L', 5));现在,这不是一个完美的解决方案,一个更好的解决方案可能是使用一个DocumentFilter,它可以让你完全控制用户可以实时输入多少和什么内容……
有关更多详细信息,请查看Implementing a Document Filter和DocumentFilter Examples。
https://stackoverflow.com/questions/25634792
复制相似问题