我有以下JFormattedTextField
try {
MaskFormatter CabinNoTextF = new MaskFormatter("###");
CabinNoTextF.setPlaceholderCharacter(' ');
CabinNoTextField = new JFormattedTextField(CabinNoTextF);
centerPanelCabin.add(CabinNoTextField);
addCabinF.add(centerPanelCabin);
addCabinF.setVisible(true);
} catch (Exception ex) {
}
CabinNoTextField
格式化为仅允许在文本字段中输入三位数。但是,我想要它,以便用户也可以输入一个数字。即用户可以输入1,15或100.但是使用上面的代码,文本字段只允许输入三个数字,如果我在文本字段中输入一个数字,它会自动清除。
如何允许CabinNoTextField
最多接受三位数,但文本字段也会接受一位数和两位数。
答案 0 :(得分:3)
使用NumberFormat
NumberFormat amountFormat = NumberFormat.getNumberInstance();
amountFormat.setMinimumIntegerDigits(1);
amountFormat.setMaximumIntegerDigits(3);
amountFormat.setMaximumFractionDigits(0);
amountField = new JFormattedTextField(amountFormat);
http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html
答案 1 :(得分:2)
以下是使用InputVerifier
的简单示例:
JFormattedTextField f = new JFormattedTextField();
f.setInputVerifier(new InputVerifier() {
@Override
public boolean verify(JComponent input) {
String text = ((JTextComponent) input).getText();
return text.length() < 4 && StringUtil.isNumeric(text); // or use a regex
}
});
检查this答案以了解更多可能性。