Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Como mostrar datos de mysql en un JTable con Decimal Format

Buenas!

Quisiera saber como puedo recoger datos de mysql y mostrarlos en un jtable.
Por ejemplo
yo tengo una columna llamada precios y quisiera que en el jtable los precios no se muestren asi:

25
sino asi:

25.00

se que existe decimalformat pero no se como usarlo en este caso.

Necesito ayuda por favor!!

agosto 13, 2014 | Registered Commenterkristxpher

Los datos debes formatearlos antes de incluirlos en el modelo de la tabla.

http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html
http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

agosto 13, 2014 | Registered Commenterchoces

si eso ya lo hice, el problema es que cuando se registran los datos en una base de datos de mysql como por ejemplo 25.00 en la base de datos se guarda como 25 y lo q yo quiero es q en el jtable tambn se muestre 25.00

agosto 13, 2014 | Registered Commenterkristxpher

Bueno, si ya lo hiciste entonces ya no hay problema no?

agosto 13, 2014 | Unregistered CommenterUnoPorAhi

Si lo hay!
Lo que yo quiero es mostrar en el jtable con dos decimales es decir que capture de la base de datos como 25 y en el jtable se muestre como 25.00 ese es el problema!!

agosto 13, 2014 | Registered Commenterkristxpher

Entonces debe ser que no sabes leer, porque eso es lo que te responde choces:

"
Los datos debes formatearlos antes de incluirlos en el modelo de la tabla.

http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html
http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html
"

Te esta diciendo como hacerlo. Cuando recuperas el 25 de la base de datos y antes de pasarlo al modelo de la tabla, debes convertirlo al formato 25.00 utilizando el DecimalFormat.

Un saludo

agosto 13, 2014 | Unregistered CommenterUnoPorAhi

Tal vez tenga alguna dificultad para obtener el formato deseado a partir de un entero.
Si es así, no sé por qué no lo aclara. Y si no es así, el problema puede deberse a dificultades para crear el modelo de la tabla, en cuyo caso, tampoco sé por qué no lo aclara igualmente.

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

public class NewMain {

/**
@param args the command line arguments
*/
public static void main(String[] args) {

String formato = getFormat(125, "##,##0.00");
System.out.println("formato ##,##0.00 -> " + formato);

}

private static String getFormat(int numero, String patron) {
String formato = "";
NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault());
if (numberFormat instanceof DecimalFormat) {
DecimalFormat decimalFormat = (DecimalFormat) numberFormat;
decimalFormat.setDecimalSeparatorAlwaysShown(true);
decimalFormat.applyPattern(patron);
formato = numberFormat.format(numero);
}
return formato;
}

}

agosto 13, 2014 | Registered Commenterchoces

y como aplicaria eso para que se muestre en el jtable, esq soy novato y no tengo muy clara la idea...

desde luego gracias por responder.

agosto 13, 2014 | Registered Commenterkristxpher

Para explicarlo mejor:

Yo ingreso estos datos:
http://www.subirimagenes.net/i/140813091750106198.png

Y quisiera que no pase esto:
http://www.subirimagenes.net/i/140813091757917523.png

Gracias de antemano

agosto 13, 2014 | Registered Commenterkristxpher

Si he entendido el problema desde el principio, no hacen falta fotos.
Lo que no sé, porque no has publicado nada de tu código, es cómo insertas los datos en el modelo de la JTable.
Como comprenderás, con ver dos fotos, no puedo saber qué no estás haciendo bien.

agosto 13, 2014 | Registered Commenterchoces

bueno en este momento no estoy en mi casa para poder copiar el codigo pero los datos los recojo de mysql con select * from tabla concat(columnas....) like +"valor" pero todavia no he hecho ningun codigo para poder poner decimales ya que no se como ponerlo te agradeceria mucho si me ayudaras y disculpas por el desconocimiento pero soy principiante
SALUDOS!

agosto 13, 2014 | Registered Commenterkristxpher

Aparte de ese extraño select con ese concat y ese like, no dices nada sobre como usas el ResulSet para alimentar el modelo de la tabla.
Eso es esencial para la cuestión, e insisto en que, para poder ayudarte, es imprescindible que muestres el código que estás usando, y cómo están declaradas las columnas de la tabla en MySQL, porque sigue extrañándome que se almacenen los datos sin decimales.

agosto 14, 2014 | Registered Commenterchoces

Este es mi codigo:
private void cargarProgramas(String valor) {
try {
String titulos[] = {"Cód.", "Programas", "Precio", "Idioma", "Clasificación", "Tamaño"};

m = new DefaultTableModel(null, titulos);
JTable p = new JTable(m);
String fila[] = new String[6];
TblProgramas.conectate obj = new TblProgramas.conectate();
String consulta = "SELECT * FROM verprogramas where CONCAT(idProgramas,' ',Programas,' ',Precio,' ',Idioma,' ',Clasificacion, Tamano) LIKE '%"+valor+"%'";
ResultSet r;
r = obj.Listar(consulta);
while (r.next()) {

fila [0] = r.getString(1);
fila [1] = r.getString(2);
fila [2] = r.getString(3);
fila [3] = r.getString(4);
fila [4] = r.getString(5);
fila [5] = r.getString(6);
m.addRow(fila);

}
tblProgramas.setModel(m);
sorter = new TableRowSorter<TableModel>(m);
tblProgramas.setRowSorter(sorter);
this.tblProgramas.setModel(m);
tblProgramas.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error al extraer los datos", "Advertencia", JOptionPane.WARNING_MESSAGE);
}

}

agosto 14, 2014 | Registered Commenterkristxpher

Ya creas una instancia de JTable con el modelo, luego no son necesarios esos setModel posteriores.

Sigue pareciéndome muy extraño ese select con ese where y ese parámetro "valor". ¿Cuál es la idea de ese where y ese valor?

Los resultados los recibes como cadenas. ¿También se almacenan como cadenas en la tabla verprogramas?

En SQL se pueden almacenar los datos como desees. Sospecho que has declarado todas las columnas como tipo String. Sin embargo, aún así, si almacenas 10.00 como String en la columna, debería devolver ese mismo dato en el ResulSet, y no 10

Tal y como lo tienes, necesitas hacer:

fila[2] = getFormat(Integer.parseInt(r.getString(3)), "##,##0.00");

Sin embargo, creo que el problema lo tienes en la declaración de la columna Precio, o en el INSERT de SQL en esa columna.

agosto 14, 2014 | Registered Commenterchoces

Bueno amigo no se si te sirva pero podrias intentar lo siguiente :

while(rs.next()){
Object[] fila = new Object[cantidadColumnas];
for (int i = 0; i < cantidadColumnas; i++) {
if(i < 2 ){
fila[i]=rs.getObject(i+1);
}else{
double ct = Double.parseDouble(rs.getObject(i+1).toString());
DecimalFormat addvarpanel = new DecimalFormat("#0.00");
String Cad= addvarpanel.format(ct);
fila[i]=Cad;
}
}
modelo01.addRow(fila);
}

julio 16, 2015 | Unregistered CommenterJorge hernandez