You are on page 1of 15

VALIDACIN DE JTEXTFIELD: TEXTFIELD NUMRICO, BINARIO O SOLO LETRAS

Alguna vez han querido validar alguna entrada de datos de algn campo? Por ejemplo, validar que lo que el usuario escribe sea solo nmeros o solo letras? Pues conociendo las propiedades adecuadas de los elementos podemos lograr esto muy fcilmente. Trabajaremos en Java con NetBeans como IDE. Por ejemplo si queremos que en un campo (JTextField) slo se ingresen nmeros, tendramos que editar el evento KeyTyped del JTextfield. Para esto, damos click derecho sobre el componente y seleccionamos Events->Key->KeyTyped tal como se muestra.

Dentro de la funcin de dicho evento, colocamos lo siguiente: Cada vez que el usuario presione una tecla, se generar este evento y lo que hacemos es sacar el caracter que presiono el usuario que se almacena en la variable evt. Luego, en un simple if decimos: si el caracter no esta entre 0 y 9 lo desechamos (consumimos). Y de esta manera logramos que el JTextField acepte slo nmeros. Tambin podemos agregar otro tipo de validacin en este mismo evento como limitar la cantidad de caracteres que se pueden escribir, esto se logra agregando un if que verifica la cantidad de caracteres en el JTextField. Por ejemplo, para los nmeros telefnicos de El Salvador que slo tienen 8 caracteres los podramos validar de la siguiente forma:

char car = evt.getKeyChar(); if(txtNumerico.getText().length()>=8) evt.consume(); if((car<'0' || car>'9')) evt.consume(); De igual manera, podramos validar que solo se puedan digitar nmeros binarios agregando el siguiente cdigo a la funcin del evento: char car = evt.getKeyChar(); if(car!='0' && car!='1') evt.consume();

De manera similar, si solo quisiramos letras tendramos que poner: char car = evt.getKeyChar(); if((car<'a' || car>'z') && (car<'A' || car>'Z')) evt.consume(); Como permitir la barra espaciadora dentro de la caja de texto: char car = evt.getKeyChar(); if((car<'a' || car>'z') && (car<'A' || car>'Z') && (car!=(char)KeyEvent.VK_SPACE)) { evt.consume(); } Con KeyEvent.VK_SPACE se captura la tecla espaciadora

Como permitir vocales con tilde en la caja de texto:

char car = evt.getKeyChar(); if((car<'a' || car>'z') && (car<'A' || car>'Z') && && && && && && && && && && car car car car car car car car car car !='' //Minsculas !='' !='' !='' !='' !='' //Maysculas !='' !='' !='' !=''

&& (car!=(char)KeyEvent.VK_SPACE)) { evt.consume(); }


Como se hace para que acepte espacios en la validacin de las letras x que si me asepta las minusculaas y las mayusculas pero si kiero DAR ESPACIO NO ME ASEPTA Para que acepte espacios se puede hacer as:

char car = evt.getKeyChar(); if((carz') && (carZ') && (car!=(char)KeyEvent.VK_SPACE)){ evt.consume(); }


Con KeyEvent.VK_SPACE se captura la tecla espaciadora Entonces evt es una variable que guarda o recibe los eventos de esa caja de texto cuando se presiona una tecla

Necesito que si el campo no tiene ningn dato no me deje pasar Agregue dos jtextbox, al primero le puse el evento FocusLost y dentro le he puesto este cdigo

if (jTextField1.getText().equals("")){ jTextField1.requestFocusInWindow(); } De este modo si dejo el textbox1 vaco e intento pasarme al otro este regresa el foco al primer textbox. Claro este no funcionara si el usuario no hace clic en el texbox1 para empezar. por alguna razn me funciona la validacin de las letras y nmeros pero no de la barra espaciadora char car = evt.getKeyChar(); if((car< '0' || car>'9') && (car< 'a' || car>'z') && (car!=' ')){ evt.consume(); } solo quiero que me acepte 2 LETRAS LA s Y LA c

char car = evt.getKeyChar(); if(car !='s' && car !='c' )

{ evt.consume(); }
Como lo hago para que me acepte numero y el guion ??

char car = evt.getKeyChar(); if((car9) && car !=- ) evt.consume();


Poder poner nombres con tilde? Encontr la solucin, solo tenes que agregar cada letra con tilde a la sentencia de evaluacin IF y te va a quedar todo as:

char car = evt.getKeyChar(); if((carz') && (carZ') && car != && car != && car != && car != && car != && (car!=(char)KeyEvent.VK_SPACE)){ evt.consume(); }
Espero que eso te ayude. cdigo con el cual podremos convertir toda letra minscula a mayscula que sea digitado en un JTextfield.

Cdigo PHP:
public void keyTyped(java.awt.event.KeyEvent evt) { char c = evt.getKeyChar();//sacamos el caracter que se ha presionado if(c<'a' || c>'z') evt.consume();//si NO es letra, no hacemos nada evt.setKeyChar((char)(c-32));//seteamos el caracter pero en mayusculas }

El truco esta en, una vez validado que el caracter este entre 'a' y 'z', lo que hacemos es restarle el

numero 32. Esto lo hacemos para convertir una letra minscula a mayscula gracias al cdigo ascii de la letra. Explicacin: la letra 'a' tiene el cdigo ascii 97,al restarle 32 conseguimos el nmero ascii 65 que es el cdigo de la letra 'A'. La letra 'b' tiene el ascii 98, al restarle 32 conseguimos el ascii 66, que es el de la letra 'B' y as sucesivamente...

Primero al botn adele un KeyPressed, lo puedes hacer dndole clic derecho al botn events->key>keyPressed Dentro del cdigo que se te gener implementa lo siguiente: char car=(char) evt.getKeyCode(); if(car==evt.VK_ENTER){ System.out.println("se presiono la tecla Enter"); //o bien puedes colocar algn mtodo que tengas. } Otra cosa, este evento solo se ejecutara cuando el foco este en el botn, ya que si el foco est en un jTextField u otro botn el evento no se generar. char car = evt.getKeyChar();

if((car<'0' || car>'9')) evt.consume();

JOptioPane,

showMessageDialog,

showConfirmDialog,

showInputDialog

showOptionDialog
La clase JOptionPane es una clase que hereda de JComponent. sta clase nos permitir crear alertas o cuadros de dilogos simples para poder solicitar, o mostrar, informacin al usuario. Los mtodos que revisaremos en este pequeo tutoras sern: 1. JOptionPane.showMessageDialog() 2. JOptionPane.showConfirmDialog(.); 3. JOptionPane.showInputDialog(); 4. JOptionPane.showOptionDialog(); Cada uno de estos mtodos presenta una particularidad distinta pero todos ellos nos muestran una ventanita pop up que nos permitir captar informacin del usuario. 1. showMessageDialog JOptionPane. showMessageDialog (Component componentePadre, Object mensaje, String titulo, int tipoDeMensaje) Nos sirve para mostrar informacin, por ejemplo alguna alerta que queremos hacerle al usuario. Veamos cuales son los principales argumentos del mtodo. componentePadre: es por el ejemplo el Frame desde el cual lo llamamos. Si queremos lo podemos poner en null, que es mas o menos lo mismo. Mensaje: es lo que queremos que diga el cuadro de dialogo. Titulo: el titulo. tipoDeMensaje: son constantes que le dirn a java que tipo de mensaje queremos mostrar. De acuerdo a esto seran los iconos que se mostraran en el cuadro de dialogo. Las opciones son

ERROR_MESSAGE INFORMATION_MESSAGE WARNING_MESSAGE QUESTION_MESSAGE PLAIN_MESSAGE

Si quisiramos mostrar un icono personalizado, podemos agregarlo al final como un argumento ms.

Ejemplo: JOptionPane.showMessageDialog(null,"Acceso Denegado","Error", JOptionPane.ERROR_MESSAGE); 2. showConfirmDialog

ste mtodo sirve para pedirle al usuario una confirmacin. Por ejemplo una confirmacin de salida del sistema Int respuesta =JOptionPane. showMessageDialog (Component componentePadre, Object mensaje, String titulo, int tipoDeOpcion); El anterior es la versin corta del los argumentos del mtodo. La versin larga incluye el tipo de mensaje y el icono, por si queremos personalizarlo. Los argumentos son idnticos a los del mtodo anterior. Excepto por el tipo de opcin, que es otra constante y los valores pueden ser:

DEFAULT_OPTION YES_NO_OPTION YES_NO_CANCEL_OPTION OK_CANCEL_OPTION

Como vemos el mtodo devuelve una un entero que nos permitir captar cual es la opcin elegida por el usuario. Los valores sern 0 para Si, 1 para No, 2 para Cancelar y -1 para el cierre de la ventana. As podremos preguntar cual es el valor devuelto y realizar la accin que deseamos. Ejemplo int i=JOptionPane.showConfirmDialog(this,"Realmente Desea Salir de Hola Swing?","Confirmar Salida",JOptionPane.YES_NO_OPTION); if(i= =0){ System.exit(0); } 3. ShowInputDialog Este mtodo nos muestra una ventana donde podremos insertar una String. Por ejemplo cuando queremos que el usuario inserte su nombre. La versin corta del mtodo es String respuesta = JOptionPane.showInputDialog(Object mensaje) Este mtodo devolver una String para poderla utilizar despus. La versin larga de los argumentos del mtodo es similar a los anteriores. Ejemplo: String nombre =JOptionPane.showInputDialog("Inserte su Nombre"); this.lbl_nombre.setText(nombre); Tambin podemos crear un cuadro de dialogo que contenga un combo con las opciones predeterminadas que le queremos dar al usuario. Ejem: Object[] valoresPocibles = {"Pedro", "Juan", "Carlos" }; Object jefe = JOptionPane.showInputDialog(null, "Seleccione cual es su Jefe Inmediato", "Seleccionar Jefe",

JOptionPane. QUESTION_MESSAGE, null, valoresPocibles, valoresPocibles[0]); this.lbl_jefe.setText((String)jefe);

El array de valores posibles nos muestra en un combo cuales sern los jefes que podemos mostrar. El ltimo argumento del mtodo nos muestra cual ser la opcin seleccionada por defecto showOptionDialog Con este mtodo podemos crear cuadros de dilogos con botones personalizados. Esta bueno para darle un toque personal a los cuadros de dialogo El mtodo tiene la forma: Int res = JOptionPane.showOptionDialog(Component componentePadre, Object mensaje, String titulo, int tipoDeOpcion, int tipoMensaje, Icon icono, Object[] botones, Object botonDefault) Aqu lo nico que varia con el resto es el array de botones que vamos a tener, debemos destacar que no hace falta que creemos botones, solo tenemos que poner cual ser el texto que saldr en el. Object[] botones = {"Si dale va a estar bueno", "No?... buuu" }; int i=JOptionPane.showOptionDialog(null, "Queres salir a Bailar esta Noche?", "Sita", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,null, botones, botones[0]); System.out.println(i); Despus podemos tomar la respuesta como lo hacamos con Bueno hasta la prxima, esto es lo ms importante en los mensajes o alertas. el confirmDialog.

REDONDEAR DECIMALES EN JAVA Continuando con el ciclo de tips en el lenguaje #java en esta ocasin les presento un mtodo muy utilizado y muy rebuscado en #SanGoogle, el mtodo para redondeo de double a una cierta cantidad de decimales. Despus de haber encontrado un sin nmero de mtodos en internet, de los cuales algunos no hacan lo que necesitaba encontr este mtodo conversando con un amigo mio en el trabajo. Este mtodo usa el metodo rint() de la clase Math de java, este metodo tiene la peculiaridad de redondear al entero mayor o igual al numero double que estee en su argumento. Veamos el metodo: (para un redondeo a 2 decimales)

public double Redondear(double numero)

{ return Math.rint(numero*100)/100; }

Bien expliquemos que hace el mtodo, primero multiplicamos por una potencia de 10 al nmero que deseamos redondear, en este caso 10 al cuadrado (la potencia de 10 depende del nmero de cifras a las cuales queremos redondear, si queremos redondear a 4 cifras elevamos a la potencia 4 esto sera 10000), luego lo pasamos como parmetro del mtodo ya mencionado rint(), luego el resultado lo dividimos por la misma potencia de 10 por la que multiplicamos (en este caso cuadrado) para retornar al valor inicial redondeado la posicin de la coma dentro del numero .

Veamos un ejemplo:

Sea el numero 25.63874 y queremos redondearlo a 3 cifras, entonces el mtodo tiene que ser redefinido como comentamos en un principio, multiplicar por la potencia de 10, en este caso elevarlo al cubo ya que redondearemos a 3 cifras y modificar el mtodo como lo mostramos a continuacin.

public double Redondear(double numero) { return Math.rint(numero*1000)/1000; }

Despues de mandar como parametro del metodo Redondear el numero 25.65874, obtendremos 25.659 que es el redondeo a 3 cifras del nmero.

Si gustan pueden implementar su metodo que les permita pasar la cantidad de cifras a redondear, eso se los dejo como tarea a ustedes.

Un saludo y espero les sirva este mtodo.

Actualizacion:

Aqui les dejo el mtodo Redondear con 2 argumentos, el primero es el nmero a redondear y el segundo es la cantidad de digitos a redondear. Simplemente usaremos los metodos de la clase Math de Java.

public static double Redondear(double numero,int digitos) { int cifras=(int) Math.pow(10,digitos); return Math.rint(numero*cifras)/cifras; }

Despues de revisar que existia un error en algunos redondeos, he encontrado la forma de realizar el redondeo exacto, esta vez sin errores. Para esto usaremos la clase BigDecimal y usaremos sus metodos.

public static void main(String[] args) { double valor = 1254.625; String val = valor+""; BigDecimal big = new BigDecimal(val); big = big.setScale(2, RoundingMode.HALF_UP); System.out.println("Nmero : "+big); }

MISEGUNDOPROYECTO
A continuacin resolveremos un segundo proyecto, el cual tomaremos el siguiente ejercicio: EJERCICIO02 Encontrar el valor de la funcin: r = 5m2 + n2

Para resolver este ejercicio abriremos un nuevo proyecto (Esto es otra forma de llamar a un nuevo proyecto):

Figura 01: Eleccion de un nuevo proyecto

Figura 02: Eleccion de un proyecto Java Application

Figura 03: Ingresar nombre del proyecto, paquete y de la clase principal

Figura 04: Proyecto listo para programar

Ahora estamos listo para comenzar con la programacin de este ejercicio. Antes hay que recordar como esta resuelto en algoritmo. algoritmo Funcion var entero : m, n, r inicio Leer(m) Leer(n) Leer(r) r = 5 * m^2 + n^2 mostrar ( 'El valor de la funcin es ', r ) fin

La solucin en cdigo de este ejercicio es el siguiente:

En este ejercicio utilizaremos los mtodos de la clase Math, La clase Math tiene miembros dato y funciones miembro estticas.

Explicaremos algunas funciones de Math en la siguiente tabla: Funcin abs Significado Valor absoluto de un nmero Ejemplo int a; a = Math.abs (-45); Resultado a = 45

ceil cos exp

Devuelve el valor redondeado int redondeado; redondeado =13 hacia el nmero superior. redondeado = Math.ceil(12.5); Coseno de un angulo Devuelve el valor de la base del logaritmo neperiano, elevado a la potencia del exponente. double valor_coseno; valor_coseno=0.8660.. valor_coseno = Math.cos(30); double valor_exp1; double valor_exp2; valor_exp1 = Math.exp(1); valor_exp2 = Math.exp(2); valor_exp1 = 2.7182.. valor_exp2 = 7.3890..

floor

Devuelve el valor redondeado double r,q; r = Math.floor(12.5); a la baja del nmero q = Math.floor(7.9); Devuelve el logaritmo del parmetro X. double a, b, c; a = Math.log(0); b = Math.log(1); c = Math.log(2); int mayor; mayor = Math.max(3,5); int menor; menor = Math.min(3,5);

r = 12 q=7 a = -Infinity b=0 c = 0.69314718.. mayor = 5 mayor = 3 Potencia = 25

log

max min pow

Devuelve entre dos nmeros el mayor de ellos Devuelve entre dos nmeros el menor de ellos

Eleva un nmero a una double potencia; potencia X. potencia = Math.pow(5,2); Math.pow(numero, potenciaX) Devuelve la raiz cuadrada de un valor. Double raiz; raiz = Math.sqrt(3);

sqrt

raiz = 1.7321...

Comprendido la clase Math, ahora pasamos a ejecutar el programa para ver los resultados obtenidos.

Explicaremos algunas funciones de Math en la siguiente tabla:

Debe de obtenerse el siguiente resultado:

You might also like