Jtable

Que tal dime tengo otra inquietud en el mismo problema después de solucionarlo con tus respuestas
Ahora en que evento del jtable puedo programar para que al hacer clic en la columna que contiene los jcheckbox me seleccione toda la fila de un color determiando y al seleccionar otra fila con el jcheckbox se le seleccione del mismo color sin que se desactive la otra fila

1 respuesta

Respuesta
1
Esas propiedades se llaman renderer, le puedes asignar colores, fuentes y bordes a las casillas del jtable, pero lo que tu dices es imposible de implementar porque al darle color a toda una fila, cuando le das click a otra fila, se colorean todas las celdas desde la fila anterior hasta la fila nueva, lo que se trabaja es con columnas, y los tipos de datos.
Para esto se crea una clase de diseño renderer como esta
public class renderer_8_10 extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Font fuente = new Font("Inherited", Font.BOLD, 12);
this.setForeground(new Color(55,115,2));
this.setFont(fuente);
this.setHorizontalAlignment(4);
return this;
}
}
Y en tu boton solo tienes que hacer
table.getColumnModel().getColumn(num_columna).setCellRenderer(new renderer_tipo_riesgo());
Esto pintara la celda que esta en la columna de la fila que esta en la celda seleccionada, y para saber cual es la celda seleccionada debes agregarle un evento de mouseclicked al jtable y agregar el siguiente código
int fila = table.rowAtPoint(evt.getPoint());
int columna = table.columnAtPoint(evt.getPoint());
Con esto sabes la fila y columna que has seleccionado.
Te voy a mandar a tu correo un ejemplo que hice sobre medir la probabilidad de un riesgo, veras como se cambia las celdas de las columnas que están en la fila donde he cambiado un dato.
Lo podrás hacer por columnas, pero por una fila entersa no, tal vez te preguntes: Si el método le da el diseño a la celda de la columna de la fila que he seleccionado, ¿por qué no le hago para que todas las columnas de esa fila se pinten?
Yo he probado con código lo que te acabo de decir, y en efecto se pinta toda la fila de la celda que he dado click, pero al dar click en otra celda, se pintan todas las celdas desde la fila que di click hasta la nueva celda que he dado click. Así que pintar toda una celda no se puede.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas