[ Foro de Java ]
Cuando renderizo las celdas de una fila y quiero luego seleccionar la fila, no puedo hacerlo con un click de mouse pero si alguna/s celda/s en la fila no está/n renderizada/s al hacer click sobre la fila y sobre alguna celda no renderizada, se enfatizan solamente aquellas celdas no renderizadas. ¿Sería posible seleccionar una fila completa en la que todas sus celdas se encuentren renderizadas?
Sí, es posible seleccionar una fila completa en la que todas sus celdas se encuentren renderizadas. Lo que debes hacer es habilitar la selección de filas en la tabla utilizando el método 'setRowSelectionAllowed(true)' y luego, cuando renderices las celdas de una fila, debes asegurarte de que el componente que estás utilizando para renderizar las celdas no tenga el foco para que se pueda seleccionar la fila completa al hacer clic en cualquier parte de la misma.
Aquí te dejo un ejemplo de cómo hacerlo:
// Habilitar la selección de filas
table.setRowSelectionAllowed(true);
// Renderizar las celdas de la tabla
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
// Obtener el componente que se encargará de renderizar las celdas
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// Si la celda está renderizada, deshabilitar el foco
if (/*la celda está renderizada*/) {
c.setFocusable(false);
}
return c;
}
});
Con este código, todas las filas que tengan todas sus celdas renderizadas podrán ser seleccionadas haciendo clic en cualquier parte de la fila.