Cuando trabajamos con base de datos o no quedemos queremos que los usuarios introduzcan algún carácter no deseado debemos tomar medias para que se introduzcan los datos correctos en cada formulario y así garantizar la fidelidad de estos datos, para hacer esto existen varias maneras la que te propongo aquí resulta muy practica y efectiva.
Primero debemos crear una clase en nuestro proyecto a la que puedes poner el nombre que desees aquí le llamaremos CheckDataIn.
Debemos hacer algunas importaciones pata que todas funcione correctamente.
La clase quedaría así:
import java.awt.Color;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class CheckDataIn {
//solo numeros
public void OnlyNumIn (JTextField Num){
Num.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e){
char c =e.getKeyChar();
if(!Character.isDigit(c)){
Num.setBackground(Color.red);
e.consume();
JOptionPane.showMessageDialog(null, "No se permite: "+"("+ c +")"+" ,en este campo.", "[!] Notificación " , JOptionPane.WARNING_MESSAGE);
Num.setBackground(Color.WHITE);
}
}
});
}
//solo letras
public void OnlyLettersIn(JTextField caracter){
caracter.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e){
char c =e.getKeyChar();
int k=(int)e.getKeyChar();
if(Character.isDigit(c)){
caracter.setBackground(Color.red);
e.consume();
JOptionPane.showMessageDialog(null, "No se permite: "+"("+ c +")"+" ,en este campo.", "[!] Notificación " , JOptionPane.WARNING_MESSAGE);
caracter.setBackground(Color.WHITE);
}
}
});
}
También podemos limitar el numero de caracteres que se puede introducir en cada formulario, esto lo hacemos agregando el siguiente bloque de código.
public void limitCaractIn (JTextField Num, int limit ){
Num.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e){
char c =e.getKeyChar();
int lmt=Num.getText().length();
if( lmt>=limit){
Num.setBackground(Color.red);
e.consume();
JOptionPane.showMessageDialog(null, "Ha exedido el limite de caracteres permitidos para este campo ", "[!] Notificación " , JOptionPane.WARNING_MESSAGE);
Num.setBackground(Color.white);
}
}
});
}
Después que la clase este creada, creamos un objeto de la clase CheckDataIn:
public class nombreDetuJframe extends javax.swing.JFrame {
CheckDataIn chk = new CheckDataIn();
}
Par que todo funcione agregamos los campos que queremos validar:
public nombreDetuJframe () {
//solo números
chk.OnlyNumIn(nombreDelJText);
//limitar cantidad de caracteres
chk.limitCaractIn(subj_Hnum, 8);
//solo letras
chk.OnlyLettersIn(subj_name);
}
De esta forma podremos validar los campos que deseamos.