Я пытался использовать маску для форматирования, но в нашей ситуации это не очень хорошо, поэтому я пришел к этому методу, используя Regex и мгновенную проверку для ввода пользователя.
Этот код генерируется с помощью GUI Builder:
jFormattedTextField2 = new javax.swing.JFormattedTextField();
jFormattedTextField2.setHorizontalAlignment(jFormattedTextField2.CENTER);
jFormattedTextField2.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(javax.swing.event.CaretEvent evt) {
jFormattedTextField2CaretUpdate(evt);
}
});
Здесь при каждом обновлении поля ввод будет проверяться с использованием matcher:
private void jFormattedTextField2CaretUpdate(javax.swing.event.CaretEvent evt) {
// validation happen here and the text is red if IP is invalid
final String regex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
final Pattern pattern = Pattern.compile(regex);
String ip = jFormattedTextField2.getText();
Matcher m = pattern.matcher(ip);
jFormattedTextField2.setForeground(Color.red);
if (m.matches()) {
jFormattedTextField2.setForeground(Color.black);
}
}