将 JTextField 格式化为最多接受三位数字,但最多可以输入 1-3 位数字
Formatting JTextField to accept three digits at most, but anything up to 1-3 digits can be typed
我有以下 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
被格式化为仅允许在文本字段中输入三位数字。但是,我想要它以便用户也可以输入一个数字。 IE。用户可以输入 1,15 或 100。但是使用上面的代码,文本字段只允许输入三个数字,如果我在文本字段中输入一个数字,它会自动清除。
如何让 CabinNoTextField
最多接受三位数字,但文本字段也可以接受一位和两位数。
使用 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
这是一个使用 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 答案以获得更多可能性。
我有以下 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
被格式化为仅允许在文本字段中输入三位数字。但是,我想要它以便用户也可以输入一个数字。 IE。用户可以输入 1,15 或 100。但是使用上面的代码,文本字段只允许输入三个数字,如果我在文本字段中输入一个数字,它会自动清除。
如何让 CabinNoTextField
最多接受三位数字,但文本字段也可以接受一位和两位数。
使用 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
这是一个使用 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 答案以获得更多可能性。