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); } }
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
yo el programador es paraguayo?
Si es paraguayo
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
Yesid, fijate si te sirve este articulo para lo que necesitas. http://www.yoelprogramador.com/como-puedo-mostrarlo-como-un-jcheckbox-el-dato-que-tenga-en-la-base-de-datos/ Saludos.
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
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.
Espero que te sirva
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.