Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Formatear los Números Decimales

Problemas con mi JTable

Con este codigo hago que las celdas o columnas de tipo Float se formateen con comas y puntos, pero tengo un problema. al digitar en la celda me sale 1.125,25 lo correcto es 1,125.25 (el decimal sale con coma y lo correcto es el punto).

este es codigo que estoy utilizando.

public class CLS_sis_empresa_TableCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 1L;

DecimalFormatSymbols simbolo= new DecimalFormatSymbols();
DecimalFormat numberFormat = new DecimalFormat("#,###.##;(#,###.##)");

public Component getTableCellRendererComponent(JTable jTable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

simbolo.setDecimalSeparator(',');
simbolo.setGroupingSeparator('.');
Component c = super.getTableCellRendererComponent(jTable, value, isSelected, hasFocus, row, column);

if (c instanceof JLabel && value instanceof Number) {

JLabel label = (JLabel) c;

label.setHorizontalAlignment(JLabel.RIGHT);

Number num = (Number) value;

String text = numberFormat.format(num);

label.setText(text);

label.setForeground(num.doubleValue() < 0 ? Color.RED : Color.BLACK);
}
return c;
}
}


En mi Clase principal del JDialog lo llamo de esta forma, de esta forma hago que se apliquen para todas las celdas de tipo Float.

tblEmpresa.setDefaultRenderer(Float.class, new CLS_sis_empresa_TableCellRenderer());

diciembre 13, 2013 | Registered Commenterfjmendozaperu

DecimalFormat usa la información de Locale para situar las comas y los puntos según la localización detectada en el Sistema Operativo. No tiene nada que ver con la máscara que se use.

Si lo que quieres es cambiar a otro Locale diferente al detectado por defecto, debes usar NumberFormat

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html
http://docs.oracle.com/javase/tutorial/i18n/locale/create.html

diciembre 13, 2013 | Registered Commenterchoces