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
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());