Básicamente existen dos formas de validar los datos ingresados por el usuario en un formulario:
- Una vez que ha ingresado todos los datos, donde lo ideal es hacerlo con expresiones regulares
- Mientras se van ingresando los datos, manejando los eventos del teclado mediante la interfaz KeyAdapter y el método keyReleased.
Respecto a esta última opción, de la mano de Casidiablo nos llega parte del siguiente código:
- En principio, debemos contar en nuestro código con una caja de texto:
- Mediante el método addKeyListener le agregaremos un handler para el evento keyReleased:
textIngreso.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
textIngresoKeyReleased(evt)
}
});
public void keyReleased(java.awt.event.KeyEvent evt) {
textIngresoKeyReleased(evt)
}
});
- Nuestro método textIngresoKeyReleased será el encargado de validar el caracter ingresado y de emitir un beep al ingreso de un caracter no válido.
private void textIngresoKeyReleased(java.awt.event.KeyEvent evt) {
Character caracter = new Character(evt.getKeyChar());
if (!esValido(caracter)) {
String texto="";
for (int i=0; i<textIngreso.getText().length();i++) {
if (esValido(new Character(textIngreso.getText().charAt(i) )) )
texto += textIngreso.getText().charAt(i);
}
textIngreso.setText(texto);
getToolkit().beep();
}
}
Character caracter = new Character(evt.getKeyChar());
if (!esValido(caracter)) {
String texto="";
for (int i=0; i<textIngreso.getText().length();i++) {
if (esValido(new Character(textIngreso.getText().charAt(i) )) )
texto += textIngreso.getText().charAt(i);
}
textIngreso.setText(texto);
getToolkit().beep();
}
}
- Finalmente, definimos el método esValido, invocado desde el método anterior
Vía: Casidiablo



diana
noviembre 30, 2009
quisiera un codigo que me permita validar datos en java (netbeans 5.0) gracias
Rich
octubre 16, 2010
//saludos quisiera q me ayudes con este codigo estube tratando de hacer que en el textField txtCodigo no ingresen letras pero no funciona si `pudieras ayudarme seria perfecto aqui te pongo el codigo. verdad aparte de este codigo existe la clase Libro y la clase ArrayLibros
package packForm;
import javax.swing.JOptionPane;
public class frmListaLibro extends javax.swing.JFrame {
ArregloLibros libros=new ArregloLibros();
/** Creates new form frmListaLibro */
public frmListaLibro() {
initComponents();
// libros.cargar();
}
@SuppressWarnings(“unchecked”)
//
private void initComponents() {
lblCodigo = new javax.swing.JLabel();
lblNombre = new javax.swing.JLabel();
lblPrecio = new javax.swing.JLabel();
lblCantidad = new javax.swing.JLabel();
lblRuta = new javax.swing.JLabel();
txtCodigo = new javax.swing.JTextField();
txtNombre = new javax.swing.JTextField();
txtPrecio = new javax.swing.JTextField();
txtCantidad = new javax.swing.JTextField();
txtRuta = new javax.swing.JTextField();
btnAtras = new javax.swing.JButton();
btnAtrasT = new javax.swing.JButton();
btnAdelanteT = new javax.swing.JButton();
btnAdelante = new javax.swing.JButton();
btnLimpiar = new javax.swing.JButton();
btnAgregar = new javax.swing.JButton();
btnVer = new javax.swing.JButton();
btnCargar = new javax.swing.JButton();
rbtnPuntoyComa = new javax.swing.JRadioButton();
rbtnPosicion = new javax.swing.JRadioButton();
jScrollPane3 = new javax.swing.JScrollPane();
txtSalida = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
lblCodigo.setText(“Codigo:”);
lblNombre.setText(“Nombre:”);
lblPrecio.setText(“Precio:”);
lblCantidad.setText(“Cantidad:”);
lblRuta.setText(“Ruta:”);
txtCodigo.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
txtCodigoKeyReleased(evt);
}
});
btnAtras.setText(“|<");
btnAtrasT.setText("<>”);
btnAdelante.setText(“>|”);
btnLimpiar.setText(“Limpiar”);
btnLimpiar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLimpiarActionPerformed(evt);
}
});
btnAgregar.setText(“Agregar”);
btnAgregar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAgregarActionPerformed(evt);
}
});
btnVer.setText(“Ver”);
btnCargar.setText(“Cargar”);
rbtnPuntoyComa.setText(“Con Punto y Coma”);
rbtnPosicion.setText(“Con Posiciones”);
txtSalida.setColumns(20);
txtSalida.setEditable(false);
txtSalida.setRows(5);
jScrollPane3.setViewportView(txtSalida);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(lblCantidad)
.addGap(18, 18, 18)
.addComponent(txtCantidad, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblCodigo)
.addComponent(lblPrecio)
.addComponent(lblNombre))
.addGap(23, 23, 23)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(txtPrecio)
.addComponent(txtCodigo)
.addComponent(txtNombre, javax.swing.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 128, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(btnAtras)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAtrasT)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAdelanteT)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAdelante))
.addGroup(layout.createSequentialGroup()
.addComponent(lblRuta)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtRuta, javax.swing.GroupLayout.DEFAULT_SIZE, 240, Short.MAX_VALUE)))))
.addGap(19, 19, 19)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(btnLimpiar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnAgregar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnVer, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(btnCargar))
.addGap(26, 26, 26))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(rbtnPosicion)
.addComponent(rbtnPuntoyComa))))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 418, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCodigo)
.addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnLimpiar))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnAgregar)
.addComponent(lblNombre))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtPrecio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnVer)
.addComponent(lblPrecio))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCantidad)
.addComponent(txtCantidad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(12, 12, 12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnAtras, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnAtrasT, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnAdelanteT, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnAdelante)))
.addGroup(layout.createSequentialGroup()
.addComponent(rbtnPuntoyComa)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rbtnPosicion)))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblRuta)
.addComponent(txtRuta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnCargar))
.addGap(26, 26, 26)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}//
private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int codigoLibro = getCodigo();
int cantidad = getCantidad();
String nombre = getNombre();
double precio = getPrecio();
Libros l=libros.buscar(codigoLibro);
if(l==null){
Libros x = new Libros(codigoLibro,cantidad,nombre,precio);
libros.agregarLibro(x);
mensaje(“Se agregó correctamente los Libros”,”Mensaje de Confirmacion”);
// libros.grabar();
listarLibro();
}
else
mensaje(“EL código ya existe …”,”Mensaje de Error”);
}
private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txtCodigo.setText(“”);
txtNombre.setText(“”);
txtCantidad.setText(“”);
txtPrecio.setText(“”);
}
private void txtCodigoKeyReleased(java.awt.event.KeyEvent evt) {
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frmListaLibro().setVisible(true);
}
});
}
// Variables declaration – do not modify
private javax.swing.JButton btnAdelante;
private javax.swing.JButton btnAdelanteT;
private javax.swing.JButton btnAgregar;
private javax.swing.JButton btnAtras;
private javax.swing.JButton btnAtrasT;
private javax.swing.JButton btnCargar;
private javax.swing.JButton btnLimpiar;
private javax.swing.JButton btnVer;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JLabel lblCantidad;
private javax.swing.JLabel lblCodigo;
private javax.swing.JLabel lblNombre;
private javax.swing.JLabel lblPrecio;
private javax.swing.JLabel lblRuta;
private javax.swing.JRadioButton rbtnPosicion;
private javax.swing.JRadioButton rbtnPuntoyComa;
private javax.swing.JTextField txtCantidad;
private javax.swing.JTextField txtCodigo;
private javax.swing.JTextField txtNombre;
private javax.swing.JTextField txtPrecio;
private javax.swing.JTextField txtRuta;
private javax.swing.JTextArea txtSalida;
// End of variables declaration
int getCodigo() {
return Integer.parseInt(txtCodigo.getText()); }
int getCantidad() {
return Integer.parseInt(txtCantidad.getText());}
String getNombre(){
return txtNombre.getText();}
double getPrecio(){
return Double.parseDouble(txtPrecio.getText());}
private void mensaje(String texto, String tipo) {
JOptionPane.showMessageDialog(null,texto,tipo,JOptionPane.INFORMATION_MESSAGE);}
private void listarLibro() {
imprimirconsultalibros();
if(libros.tamañoLibro()>0){
imprimirconsultalibros(“”);
imprimirconsultalibros(” Código Nombre\t Cantidad \t Precio “);
txtSalida.append(” —————————————————————————-”);
imprimirconsultalibros(“”);
for(int i=0;i<libros.tamañoLibro();i++){
Libros l=libros.obtener(i);
imprimirconsultalibros(""+l.getCodigo()+"\t"+ l.getNombre()+"\t"+l.getCantidad()+"\t"+l.getPrecio());
}
imprimirconsultalibros(" ———————————————————————–");
imprimirconsultalibros(" N° de Libros: "+libros.tamañoLibro());
}
else
mensaje("No exiten Libros …","Mensaje de Error");
}
private void imprimirconsultalibros(String s) {
txtSalida.append(""+s+"\n");}
private void imprimirconsultalibros() {
txtSalida.setText("");}
}