• Sábado 21 de Septiembre de 2024, 16:00

Autor Tema:  Validacion Jformattedtextfield  (Leído 3467 veces)

Blizknight

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Validacion Jformattedtextfield
« en: Miércoles 26 de Julio de 2006, 02:35 »
0
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
  1. import java.awt.event.*;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. import javax.swing.text.*; //contiene el metodo MaskFormatter
  5. import java.text.*; //Contiene el metodo ParseException
  6.  
  7.  
  8. public class JFormatted extends JFrame implements ActionListener
  9. {
  10.  JLabel lbl;
  11.  JTextArea txt;
  12.  JFormattedTextField txts;
  13.  JButton btn;
  14.  MaskFormatter mascara; //Declare la mascara (lo olvidaste)
  15. JScrollPane scroll;
  16.  
  17.  public JFormatted()
  18.  {
  19.  
  20.      setSize(300,180);
  21.      setResizable(false);
  22.      setTitle("Que Tipo de # es ??");
  23.      setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  24.      getContentPane().setLayout(null);
  25.  
  26.      lbl = new JLabel("Numero");
  27.      lbl.setBounds(15,15,50,23);
  28.      getContentPane().add(lbl);
  29.      
  30.       txt = new JTextArea();
  31.    txt.setBounds(15,50,250,80);
  32.    getContentPane().add(txt);
  33.    txt.setFont(new Font("monospaced",4,12));
  34.    
  35.    scroll = new JScrollPane(txt);
  36.    scroll.setBounds(15,50,250,80);
  37.    getContentPane().add(scroll);
  38.    
  39.    btn = new JButton("Try");
  40.    btn.setBounds(210,15,75,23);
  41.    btn.addActionListener(this);
  42.    getContentPane().add(btn);
  43.      
  44.      gettxts(); //Llame al metodo
  45.  }
  46.  
  47.  private JFormattedTextField gettxts()
  48.  {
  49.      if (txts == null)
  50.      { //si no esta vacia lo intenta
  51.          try
  52.          {
  53.              mascara = new MaskFormatter("*************"); //solo se admiten 13 caracteres
  54.              mascara.setValidCharacters("1234567890"); //solo caracteres numericos
  55.          }
  56.          catch (ParseException e1)
  57.          {
  58.              e1.printStackTrace(); //por si hay error imprime el error
  59.          }
  60.          txts = new JFormattedTextField(mascara);//se asigna
  61.  
  62.          txts.setFocusLostBehavior(3); //se le asigna el foco (no es necesario)
  63.          getContentPane().add(txts); //agregue el txts al forml (lo olvidaste)
  64.          txts.setBounds(new java.awt.Rectangle(70,20,120,16)); //setBounds .... (lo ajuste de acuerdo al form)
  65.      }
  66.      return txts; //retorna la caja de text formateada
  67.  }
  68.  
  69.  public void actionPerformed(ActionEvent e)
  70.  {
  71.   try{
  72.    //String result="";
  73.  
  74.    String a = txts.getText();
  75.    
  76.  
  77.  
  78.     /*double numero=Double.parseDouble(txts.getText());
  79.      if(numero%2 == 0)
  80.      {
  81.        txt.setText("");
  82.      result = "El Numero es PAR";
  83.      }
  84.      else
  85.      {
  86.       txt.setText("");
  87.       result="El Numero es IMPAR";
  88.      }*/
  89.      if (a.length()>=13)   //Raro
  90.      {
  91.        JOptionPane.showMessageDialog(this,"Rellene ");
  92.      }
  93.      txt.append(a);
  94.     }
  95.      catch(NumberFormatException r)
  96.      {
  97.      
  98.      }
  99.  
  100.   }      
  101.  
  102.  
  103.  
  104.  public static void main(String args[])
  105.  {
  106.      new JFormatted().setVisible(true);
  107.  }
  108. }
  109.  

jlsoriam

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Validacion Jformattedtextfield
« Respuesta #1 en: Martes 1 de Agosto de 2006, 01:27 »
0
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