Mostrando entradas con la etiqueta ejemplo decimal format. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejemplo decimal format. Mostrar todas las entradas

viernes, 18 de junio de 2010

Validar Jtexfield solo numeros con formato decimal y simbolo de monedas

package panadero;

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

/**
*
* @author Fernando Perez (El Panadero)
* Codigo de ejemplo para validar un Jtexfiel en el evento KeyPresed
* de solo numeros con formato decimal para valores de moneda!!!
* funciona al presonar al tecla Enter de teclado.
*
*/
public class tu_jframe extends javax.swing.JFrame {
String form, moneda=" BsF.";
DecimalFormat formateador = new DecimalFormat("###,###.##");

public tu_jframe() {
initComponents();
}


@SuppressWarnings("unchecked")
//
private void initComponents() {

jLabel1 = new javax.swing.JLabel();
texto1 = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setText("Validar");

texto1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
texto1KeyPressed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(47, 47, 47)
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(texto1, javax.swing.GroupLayout.PREFERRED_SIZE, 171, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(68, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(67, 67, 67)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(texto1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(94, Short.MAX_VALUE))
);

pack();
}//


@SuppressWarnings("static-access")
private void texto1KeyPressed(java.awt.event.KeyEvent evt) {
char a;
String sala="",sal="";
sal=texto1.getText();
//Tomamos el valor del objeto Jtexfield por un variable String, es de mi preferencia hacer
//esto ya que me permite aplicar todo tipo de formatos incluides en cualquier operacion numerica
if( evt.VK_ENTER == evt.getKeyCode() ) {//comparamos el valor de la tecla presionada con la tecla enter
for (int i=0; i < sal.length(); i++){
a = sal.charAt(i);
//Luego se determina la longitud de la cadena, para q atraves de la funcion charAt() se compare miembro a miembro
//los elemntos contenidos en el Jtexfield para extraer a una nueva variable de cadena solo los caracteres permitidos, se aplica a una diversidad de opciones si se estudia con cuidado.
if (a == '1'){sala=sala+"1";}
if (a == '2'){sala=sala+"2";}
if (a == '3'){sala=sala+"3";}
if (a == '4'){sala=sala+"4";}
if (a == '5'){sala=sala+"5";}
if (a == '6'){sala=sala+"6";}
if (a == '7'){sala=sala+"7";}
if (a == '8'){sala=sala+"8";}
if (a == '9'){sala=sala+"9";}
if (a == '0'){sala=sala+"0";}
}
texto1.setText(String.valueOf(formateador.format(Double.parseDouble(sala))+moneda));
//Pues bien ya tenemos la cedena validad y ahora aplicamos la funcion DecimalFormat para darle la apariencia que necesitamos.
if(sala.length()>0){
texto1.requestFocus();}else{texto1.setText("0");JOptionPane.showMessageDialog (null, "Tu Jtexfield es=0, es eso correcto?");}

} // TODO add your handling code here:
}


public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new tu_jframe().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField texto1;
// End of variables declaration

}