Java - Cambiar color fila o celda al cargar jtable

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

Cambiar color fila o celda al cargar jtable

Publicado por Fabian (2 intervenciones) el 09/06/2021 01:12:12
Buen día a todos

Tuve que recurrir nuevamente a la comunidad para poder orientarme en el siguiente inconveniente. Apenas estoy empezando en java, la cuestion es que estoy cargando un jtable y todo va bien, pero requiero que dependiendo del valor de la celda 5 de cada fila que se cargue, dicha fila cambie de color a azul, rojo o verde dependiendo de ese valor.

Tengo mi código que carga mi tabla así:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
DefaultTableModel modelo = new DefaultTableModel();
Agendas.jTable1.setModel(modelo);
Agendas.jTable1.setDefaultEditor(Object.class, null);
modelo.setColumnIdentifiers(new Object[]{"Ide","Habilita","Hora","Admision","Paciente","Paciente_Est","Modalidad"});
 
Statement st = con.createStatement();
Statement st2 = con.createStatement();
ResultSet rs = st.executeQuery("Query 1");
 
while (rs.next())
{
    ResultSet rs2 = st2.executeQuery("Query2");
    if (rs2.next())
    {
        if ("B".equals(rs2.getString("Estado")))
        {
            Pac = "Bloqueado";
 
        }
        else
        {
            Pac = rs2.getString("Usuario");
        }
 
       //No se como ingresar aquí alguna condición que me cambie la fila inmediatamente al cargarla dependiendo del estado de la misma, o cambiar celda por celda no importa
 
        modelo.addRow(new Object[]{rs.getString("Ide"),
                                   rs.getString("Habilita"),
                                   rs.getString("Hora"),
                                   rs2.getString("Id"),
                                   Pac,
                                   rs2.getString("Estado"),
                                   rs2.getString("Modalidad")});
    }
    else
    {
        modelo.addRow(new Object[]{rs.getString("Ide"),
                                   rs.getString("Habilita"),
                                   rs.getString("Hora"),
                                   "",
                                   "",
                                   "",
                                   ""});
    }
}

He buscado por varios foros el getTableCellRenderer pero no se como implementarlo, puede alguien orientarme en como puedo hacerlo, desde ya muchas gracias
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
sin imagen de perfil
Val: 6
Ha aumentado su posición en 659 puestos en Java (en relación al último mes)
Gráfica de Java

Cambiar color fila o celda al cargar jtable

Publicado por Fabian (2 intervenciones) el 09/06/2021 15:39:34
Bueno, después de tanto intentar lo he logrado con el siguiente código, lo dejo por si alguien lo esta buscando.

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
29
30
31
32
33
34
35
36
37
38
39
40
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
    private DefaultTableCellRenderer colorCelda()
    {
        DefaultTableCellRenderer dtcr = new DefaultTableCellRenderer()
        {
            private Component componente;
 
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
            {
                componente = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
 
                switch(table.getValueAt(row, 5).toString())
                {
                    case "H":
                        setBackground(Color.BLUE);
                        componente.setForeground(Color.white);
                        break;
 
                    case "P":
                        setBackground(Color.green);
                        componente.setForeground(Color.white);
                        break;
 
                    case "B":
                        setBackground(Color.orange);
                        componente.setForeground(Color.white);
                        break;
 
                    default:
                        setBackground(Color.white);
                        componente.setForeground(Color.black);
                        break;
                }
 
                return componente;
            }
        };
        return dtcr;
    }
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