我想在java中为textfield设置自己的验证。例如,假设我希望用户输入 10d2-5 , 100d2 , 23d5 等值,而不是 aa25- 22 即可。我可以使用MaskFormatter来做到这一点,但问题是,如果我将其格式设置为(## d#),它就不会接受三位数字。这是我的代码:
JFormattedTextField textField = new JFormattedTextField();
MaskFormatter dateMask = new MaskFormatter("##.#");
dateMask.install(textField);
答案 0 :(得分:0)
这是一个可以帮助您入门的InputVerifier示例:
import java.text.ParseException;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFormattedTextField;
import javax.swing.JTextField;
public class Test {
public static void main(String[] args) throws ParseException
{
JTextField textField = new JFormattedTextField();
textField.setInputVerifier(new MyInputVerifier());
}
}
class MyInputVerifier extends InputVerifier {
public MyInputVerifier() {}
@Override
public boolean verify(JComponent input) {
JTextField textField = (JTextField) input;
String validate = textField.getText();
if (validate !=null /* replace with relevant tests cosde */) {
return true;
} else {
return false;
}
}
}