import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.text.MaskFormatter;
import java.awt.FlowLayout;
import java.text.AttributedCharacterIterator;
import java.text.FieldPosition;
import java.text.Format;
import java.text.NumberFormat;
import java.text.ParsePosition;
public class Main {
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100, 75);
JPanel content = new JPanel(new FlowLayout());
frame.setContentPane(content);
MaskFormatter formatter = new MaskFormatter("#");
formatter.setValidCharacters("123456789");
JFormattedTextField f1 = new JFormattedTextField(formatter);
f1.setValue(null);
f1.setColumns(1);
content.add(f1);
frame.setVisible(true);
}
private static Format createFormat() {
NumberFormat format = NumberFormat.getInstance();
format.setParseIntegerOnly(true);
return new Format() {
@Override
public StringBuffer format(Object obj, StringBuffer toAppendTo,
FieldPosition pos) {
return format.format(obj, toAppendTo, pos);
}
@Override
public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
return format.formatToCharacterIterator(obj);
}
@Override
public Object parseObject(String source, ParsePosition pos) {
int initialIndex = pos.getIndex();
Object result = format.parseObject(source, pos);
if (result != null && pos.getIndex() > initialIndex + 1) {
int errorIndex = initialIndex + 1;
pos.setIndex(initialIndex);
pos.setErrorIndex(errorIndex);
return null;
}
return result;
}
};
}
}