Java - Formato en un JTable

 
Vista:
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Formato en un JTable

Publicado por Daniel (8 intervenciones) el 12/11/2019 20:49:44
Los molesto para ver si alguien tiene idea de como resolver este problema.
En una jTable por un lado usando getColumClass del modelo indico que columna es tipo int. (sobre todo para el tema del órden por la columna)

1
2
3
4
5
6
7
8
private DefaultTableModel modelo = new DefaultTableModel(){
    @Override
    public Class getColumnClass(int columna) {
        if (columna == 0 ||columna == 4 ||columna == 5 ||columna == 6 || columna == 9)
            return Integer.class; //Le dice al modelo que la primera columna es de tipo integer
        return String.class; //Si no, es String
    }
};

Por otro lado con getTableCellRendererComponent pongo de un determinado color (y formato) la fila según el valor de la celda de una determinada columna
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
public Component getTableCellRendererComponent (JTable table, Object value, boolean selected, boolean focused, int row, int column)
{
    setBackground(Color.white);
    table.setForeground(Color.black);
    super.getTableCellRendererComponent(table, value, selected, focused, row, column);
    if(table.getValueAt(row,columna).equals("E")){
        this.setForeground(Color.RED);
        this.setFont(new Font("Arial",Font.ITALIC,10));
    }else if(table.getValueAt(row,columna).equals("_")){
        this.setForeground(Color.BLACK);
    }
    return this;
}

Mediante
1
2
RowsRenderer rr = new RowsRenderer(8);  //en la columna 8 están los “E” y los “_”
tabla.setDefaultRenderer(Object.class, rr);

El problema que tengo es que lo que es tipo entero no me toma el formato del RowsRenderer

En el ejemplo la primera línea debería tener en todas las celdas el formato rojo.
Si alguien lo tiene claro les agradezco me lo hagan saber.
Desde ya muchas gracias.

error-jtable
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Formato en un JTable

Publicado por pablo (239 intervenciones) el 12/11/2019 22:05:17
Hola Daniel, no se ve cual es la columna 8 en tu problema a la que haces mención, lo que se me ocurre y no sé si esto sea una alternativa es que esa que le asignas, podrías hacerle un casting a String otra vez para que tome los valores que consideras.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Formato en un JTable

Publicado por Daniel (8 intervenciones) el 13/11/2019 20:58:36
error-jtable-2

hace bien las dos cosas, a los que les digo que sean enteros los toma como enteros, y a la líneas que deben estar en rojo lo están, pero no las columnas que toma como entero.

hice el intento de pasar el valor como string, pero como le digo que tome la columna como un entero lo cambia nuevamente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Formato en un JTable

Publicado por pablo (239 intervenciones) el 13/11/2019 21:40:33
Hola Daniel, disculpa, pero la verdad no logro entender que es lo que quieres hacer, le quieres asignar un formato pero que se supone que debe de tener ese formato, en el de las rojas esta bien se asigna pero en el - no le das un formato como tal en tu método como solo haces que sea negro y ya, más nada, disculpa nuevamente pero si podrías ser un poco especifico o compartir esa clase RowsRenderer por que yo la verdad no sé que hace.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Formato en un JTable

Publicado por Daniel (8 intervenciones) el 13/11/2019 21:54:56
si,,, lo del negro no importa,,, el tema es que cuando tenga un "E" u otra cosa cambie el formato...
ahí va la clase entera

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class RowsRenderer extends DefaultTableCellRenderer {
    private int columna ;
 
    public RowsRenderer(int Colpatron)
    {
        this.columna = Colpatron;
    }
 
    @Override
    public Component getTableCellRendererComponent (JTable table, Object value, boolean selected, boolean focused, int row, int column)
    {
        setBackground(Color.white);
        table.setForeground(Color.black);
        super.getTableCellRendererComponent(table, value, selected, focused, row, column);
        if(table.getValueAt(row,columna).equals("E")){
            this.setForeground(Color.RED);
            this.setFont(new Font("Arial",Font.ITALIC,10));
        }else if(table.getValueAt(row,columna).equals("_")){
            this.setForeground(Color.BLACK);
        }else if(table.getValueAt(row,columna).equals("B")){
            this.setForeground(Color.BLUE);
        }else if(table.getValueAt(row, columna).equals("C")){
            this.setForeground(Color.GREEN);
        }
 
        return this;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Formato en un JTable

Publicado por pablo (239 intervenciones) el 14/11/2019 13:16:21
Hola Daniel, disculpa la demora en responder, lee esta página

https://rstopup.com/el-cambio-de-jtable-color-de-celda.html

en ella se específica que al momento en que haces el llamado del metodo tabla.setDefaultRenderer(Object.class, rr); deberás pasarle a que quieres que sea en este caso según entiendo debe ser a Integer, podrías intentarlo con Integer.class a ver sí solventa tu problemática.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Formato en un JTable

Publicado por Daniel (8 intervenciones) el 14/11/2019 13:47:25
muchas gracias por tu respuesta, hoy de noche lo pruebo y veo que pasa.... a esta altura ya es mas por la frustración que por el agregarlo en el proyecto.... luego cuento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar