Tengo una JTable basculante básica y el requisito es que cuando se hace clic en una celda, se resalte toda la fila y también que la celda en la que se hizo clic tenga un color diferente al resto de la fila resaltada.Swing JTable - Resalta la celda seleccionada en un color diferente del resto de la fila seleccionada?
Actualmente, tengo isRowSelectionAllowed como cierto
He intentado utilizar una costumbre TableCellRenderer es el siguiente:
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
c.setBackground(Color.red);
}
else {
c.setForeground(Color.black);
c.setBackground(Color.white);
}
return c;
}
}
Pero eso no parece funcionar (fila entera estaba resaltado en rojo).
También probé establecer la propiedad UIManager de la siguiente manera:
UIManager.put("Table.focusCellBackground",
new javax.swing.plaf.ColorUIResource (Color.red));
Pero eso no parece funcionar bien (a pesar de que, cuando traté de establecer una frontera usando
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.red));
que funcionaba bien)
¿Podría darme alguna sugerencia sobre lo que podría necesitar hacer?
Intenté esto, pero no cambia el color en absoluto. Entra en la condición if para 'isCellSelected' y' isRowSelected', pero no parece estar haciendo nada. –
Lo siento, mi error - Lo intenté, y esto funciona. Muchas gracias. (Estableciendo esto como la respuesta aceptada debido al código de trabajo. Otras respuestas fueron útiles para aprender también). –