Tengo una tabla en la que guardo ciertos datos. Tiene 4 columnas, y en una de ellas (la columna 1), pinto de color rojo o verde los valores de acuerdo a si es un ingreso o egreso..
Para eso utilizo esta clase DefaultTableCellRenderer:
Cita:
Y desde aca le aplico el render a la tabla.. Esto lo va haciendo a medida que voy cargando los datos en la tabla, con un while:public class Render extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
JLabel label = (JLabel) super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);
if(column == 1){
float val = Float.parseFloat(value.toString());
if(val < 0){
label.setForeground(Color.RED);
label.setText(String.valueOf(val * (-1)));
}
else label.setForeground(Color.GREEN);
label.setOpaque(true);
label.setHorizontalAlignment(SwingConstants.RIGHT) ;
}
return label;
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
JLabel label = (JLabel) super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);
if(column == 1){
float val = Float.parseFloat(value.toString());
if(val < 0){
label.setForeground(Color.RED);
label.setText(String.valueOf(val * (-1)));
}
else label.setForeground(Color.GREEN);
label.setOpaque(true);
label.setHorizontalAlignment(SwingConstants.RIGHT) ;
}
return label;
}
}
Cita:
Esto me funciona bien, pero lo que yo quiero hacer ahora es alinear a la derecha el texto de la columna 2 pero no se como hacerlo.. Probe poniendo una condicion: tabla.setDefaultRenderer(Float.class, render);
if(colum == 2) label.setHorizontalAlignment(SwingConstants.RIGHT) ;
pero no me funciona, hace cualquier cosa..
Si alguien sabe alguna manera de hacerlo, les agredeceria..!
Saludos!