Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con TableCellRenderer

Estas en el tema de Problema con TableCellRenderer en el foro de Java en Foros del Web. Estoy utilizando una clase que implementa TableCellRenderer para poder formatear los numericos de mi JTable, pero el problema que tengo es que al seleccionar la ...
  #1 (permalink)  
Antiguo 09/03/2011, 20:31
Avatar de francopai  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 2
Problema con TableCellRenderer

Estoy utilizando una clase que implementa TableCellRenderer para poder formatear los numericos de mi JTable, pero el problema que tengo es que al seleccionar la fila, las columnas formateadas no se "pintan" como se seleccion, se pinta toda la fila menos los campos donde se aplicó el format con la clase antes mencionada. A continuacion dejo el codigo que estoy utilizando, desde ya, muchas gracias!

Código:
public class RenderTabla extends JFormattedTextField implements TableCellRenderer {

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

        this.setBorder(BorderFactory.createEmptyBorder());

        if (value instanceof Double) {
            Double valor = (Double) value;
            this.setFormatterFactory(new DefaultFormatterFactory(new NumberFormatter(new DecimalFormat("##,##0.00"))));
            this.setHorizontalAlignment(SwingConstants.RIGHT);
            this.setValue(valor);
        }

        return this;
    }
}
Y en cada JTable lo aplico de esta manera:
Código:
tbl_Resultados.setDefaultRenderer(Double.class, new RenderTabla());
  #2 (permalink)  
Antiguo 09/03/2011, 23:03
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Problema con TableCellRenderer

Hola,

Posiblemente,

Código Java:
Ver original
  1. @Override
  2.         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  3.             setBorder(hasFocus ? UIManager.getBorder("Table.focusCellHighlightBorder") : null);
  4.             setBackground(isSelected ? UIManager.getColor("Table.selectionBackground") : UIManager.getColor("Table.background"));
  5.             setFormatterFactory(new DefaultFormatterFactory(new NumberFormatter(new DecimalFormat("##,##0.00"))));
  6.             setHorizontalAlignment(SwingConstants.RIGHT);
  7.             Double valor = null;
  8.             if (value instanceof Double) valor = (Double)value;
  9.             setValue(valor);
  10.             return this;
  11.         }
Si el valor no es doble debe de ponerlo como null, sino te muestra el último valor que fue doble, al pintar solamente se crea una instancia.

Saludos,
  #3 (permalink)  
Antiguo 10/03/2011, 11:54
Avatar de francopai  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con TableCellRenderer

Muchas Gracias, problema solucionado.

Etiquetas: jtable, tablecellrenderer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:11.