Programación General > Java
Validacion Jformattedtextfield
(1/1)
Blizknight:
hOLA A TODOS!!
que tal ? :D
bueno de nuevo con otra duda, pues era que no puedo validar el jformattedtextfield, no se por que pero me da un pequeño error que no encuentro solucion, compilen el codigo y luego verifiquen con casilla vacia y con casilla llena, aun no tengo la solucion
gracias y saludos :hola: :lightsabre:
--- Código: Text ---import java.awt.event.*;import java.awt.*;import javax.swing.*;import javax.swing.text.*; //contiene el metodo MaskFormatterimport java.text.*; //Contiene el metodo ParseException public class JFormatted extends JFrame implements ActionListener{ JLabel lbl; JTextArea txt; JFormattedTextField txts; JButton btn; MaskFormatter mascara; //Declare la mascara (lo olvidaste)JScrollPane scroll; public JFormatted() { setSize(300,180); setResizable(false); setTitle("Que Tipo de # es ??"); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); getContentPane().setLayout(null); lbl = new JLabel("Numero"); lbl.setBounds(15,15,50,23); getContentPane().add(lbl); txt = new JTextArea(); txt.setBounds(15,50,250,80); getContentPane().add(txt); txt.setFont(new Font("monospaced",4,12)); scroll = new JScrollPane(txt); scroll.setBounds(15,50,250,80); getContentPane().add(scroll); btn = new JButton("Try"); btn.setBounds(210,15,75,23); btn.addActionListener(this); getContentPane().add(btn); gettxts(); //Llame al metodo } private JFormattedTextField gettxts() { if (txts == null) { //si no esta vacia lo intenta try { mascara = new MaskFormatter("*************"); //solo se admiten 13 caracteres mascara.setValidCharacters("1234567890"); //solo caracteres numericos } catch (ParseException e1) { e1.printStackTrace(); //por si hay error imprime el error } txts = new JFormattedTextField(mascara);//se asigna txts.setFocusLostBehavior(3); //se le asigna el foco (no es necesario) getContentPane().add(txts); //agregue el txts al forml (lo olvidaste) txts.setBounds(new java.awt.Rectangle(70,20,120,16)); //setBounds .... (lo ajuste de acuerdo al form) } return txts; //retorna la caja de text formateada } public void actionPerformed(ActionEvent e) { try{ //String result=""; String a = txts.getText(); /*double numero=Double.parseDouble(txts.getText()); if(numero%2 == 0) { txt.setText(""); result = "El Numero es PAR"; } else { txt.setText(""); result="El Numero es IMPAR"; }*/ if (a.length()>=13) //Raro { JOptionPane.showMessageDialog(this,"Rellene "); } txt.append(a); } catch(NumberFormatException r) { } } public static void main(String args[]) { new JFormatted().setVisible(true); }}
jlsoriam:
Despues de ver tu programa, entendi que lo que deseas es que cuando se ingresa 13 digitos o mas, salga el mensaje "Rellene" y el texto ingresado no debe aparecer en el textArea.
Es correcto?
Si es asi, entonces mira la correccion que hice en el metodo actionPerformed.
public void actionPerformed(ActionEvent e)
{ try{
String a = txts.getText();
if (a.trim().length()>=13) //Raro
JOptionPane.showMessageDialog(this,"Rellene ");
else txt.append(a);
}
catch(NumberFormatException r)
{
}
}
Compara con el codigo anterior que tenias. Solo agregue el metodo trim() y tambien agrege un 'else'.
Espero haberte ayudado.
Saludos
Jose
Navegación
Ir a la versión completa