Formateo de numero en un JTable Java

Ahora mientras estaba cargando una Jtable de productos me encontre con un problemita, no necitaba que el precio de los productos me muestres con separadores de miles Ej. 1.000.000, el valor que estiraba del campo precio de la base de datos estaba en Decimal, y me devolvia asi 1000000.00, para poder solucionar este problemita lo hice de una manera bien simples. Utilice el código que ya he  mostrado en otro post para cargar los registros de una consulta MySQL dentro de un Jtable.

El código les dejo aca por si necesiten, lo ice dentro de un método asi que si necesitamos cargar los registros de una tabla con una consulta MySQL podemos usar este mismo metodo.

void cargarProducto(String){
 String [] titulos = {"CODIGO", "NOMBRE", "PRECIO", "COSTO"}; 
 String [] registros = new String[4];
 String sql = "SELECT * FROM tblproducto";
model = new DefaultTableModel(null, titulos);
 conectar cc = new conectar();
 Connection cn = cc.conexion();
 try {
 java.sql.Statement st = cn.createStatement();
 ResultSet rs = st.executeQuery(sql);
 while(rs.next()){
 DecimalFormat formatea = new DecimalFormat("###,###.##");
 registros[0]=rs.getString("CODIGO"); 
 registros[1]=rs.getString("PRODUCTO");
 registros[2]=formatea.format(rs.getInt("PRECIO"));
 registros[3]=formatea.format(rs.getInt("COSTO"));
 model.addRow(registros);
 }
 table.setModel(model);
 //Este codigo ajusta los tamanos de las columnas
 int[] anchos = {30, 300, 20, 10, 10, 50};
 for(int i = 0; i < table.getColumnCount(); i++) {
 table.getColumnModel().getColumn(i).setPreferredWidth(anchos[i]);
 }
 } catch (Exception e) {
 // NOTA: So hubo error muestra el error
 JOptionPane.showMessageDialog(null, e);
 }
 }

9 comentarios en “Formateo de numero en un JTable Java”

  1. Era exactamente lo que andaba buscando, sin querer ser muy atevido sera que podrias postar una forma de hacer calculos con numeros enteros y decimales en Java

  2. Excelente, tengo un pregunta pero necesito tu ayuda, que me tiene loco y no lo encontrado, resulta que tengo una tabla en mysql en donde hay campos BIT, boolean, TINYINT, cual quiera de ellas, pero la quiero mostrar en Jtable, que no que me diga false o true o 1 o 0, como puedo mostrarlo como un jcheckbox el dato que tenga en la base de datos,.
    [ √ ] resulset me lo trae pero no me sale el jchekbox. Y a la verdad he es encontrado como adicionarlo pero no como leer de una tabla de datos.
    si puedes regalarme un codigo de como se implementaría te lo agradecería mucho o un video donde lo puedas explicar, lo que sea que me ayude.
    mi correo es yesidcallegonzalez@gmail.com
    gracias

  3. Excelente, justo asi lo buscaba!!
    sin embargo cuando intento sumar los valores de una columna, en la que se tiene el numero con formato, no me deja sumar

  4. Hola Jhon, antes de poner el formato al numero debes hacer la suma, y ponle el formato solo al resultado. Acá te dejo un ejemplo.

    int suma = 0;
     while(rs.next()){
     DecimalFormat formatea = new DecimalFormat("###,###.##");
    
    suma = (rs.getInt("PRECIO") + rs.getInt("COSTO"));
     registros[0]=rs.getString("CODIGO"); 
     registros[1]=rs.getString("PRODUCTO");
     registros[2]=formatea.format(rs.getInt("PRECIO"));
     registros[3]=formatea.format(rs.getInt("COSTO"));
    registros[4]=formatea.format(suma);
     model.addRow(registros);
     }
    

    Espero que te sirva

  5. DefaultTableModel mVenta = new DefaultTableModel();
    // Columnas de tablas
    mVenta.addColumn(«Codigo»);
    mVenta.addColumn(«Nombre del Producto»);
    mVenta.addColumn(«Precio de Venta»);
    mVenta.addColumn(«Precio de Compra»);
    mVenta.addColumn(«Ganancia»);
    tblRegistroVenta.setModel(mVenta);

    listar(tblRegistroVenta);

    void listar(JTable tabla) {

    aliDerecha.setHorizontalAlignment(SwingConstants.RIGHT);
    tabla.getColumnModel().getColumn(2).setCellRenderer(aliDerecha);
    tabla.getColumnModel().getColumn(3).setCellRenderer(aliDerecha);
    tabla.getColumnModel().getColumn(4).setCellRenderer(aliDerecha);
    tabla.getColumnModel().getColumn(4);
    mVenta.setRowCount(0);
    ArrayList producto;
    producto = new MySqlProducto().ListarProducto();

    for (Producto prod : producto) {
    Object fila[] = { prod.getCodigo(), prod.getNombre(),prod.getPrecioVenta()+» «,
    prod.getPrecioCompra()+» «,prod.getGanancia()+» » };
    mVenta.addRow(fila);}
    }

    Implemente mi tabla de otra manera, ahora lo que quiero es que al momento de listar la columna Ganancia (4) que se formate los decimales mostrando solamente dos decimales, ejm: 14.10, porfa si me podrian ayudar seria de gran ayuda.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.