Foro sobre Java SE > Como mostrar datos de mysql en un JTable con Decimal Format
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
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
Bueno, si ya lo hiciste entonces ya no hay problema no?
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!!
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
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;
}
}
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.
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
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.
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!
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.
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);
}
}
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.
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);
}
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!!