Foros del Web » Programación para mayores de 30 ;) » Java »

problema checkbox y clases TableModel y render

Estas en el tema de problema checkbox y clases TableModel y render en el foro de Java en Foros del Web. Hola chicos, tengo un pequeño problema con un jTable en el que quiero añadir un checkbox en una columna. A ver he utilizzado la clase ...
  #1 (permalink)  
Antiguo 23/11/2011, 05:55
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
problema checkbox y clases TableModel y render

Hola chicos,
tengo un pequeño problema con un jTable en el que quiero añadir un checkbox en una columna.

A ver he utilizzado la clase DefaultTableModel para indicarle al Jtable que la última columna (la 9) será un checkbox indicando la clase Boolean.class.

protected DefaultTableModel dtModel1 = new DefaultTableModel (data1,0) {
private static final long serialVersionUID = 1L;
public Class<?> getColumnClass(int col) {
if (col == 9) {
return Boolean.class;

} else {
return String.class;
}
}
public boolean isCellEditable (int row, int column) {
//Si fuera editable alguna columna devolveria "true"
return false;
}
};

Por otro lado quiero que las filas donde este checkbox este seleccionado se pinte de verde el fondo. Para ello he utilizado la clase ColoredTableCellRenderer que extiende de la clase DefaultTableCellRenderer


class ColoredTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
Font normal = new Font( "Arial",Font.PLAIN,12 );
Font negrilla = new Font( "Helvetica",Font.BOLD,18 );
Font cursiva = new Font( "Times new roman",Font.ITALIC,12 );

@Override
public Component getTableCellRendererComponent ( JTable table, Object value, boolean selected, boolean focused, int row, int column )
{
setEnabled(table == null || table.isEnabled());
setBackground(Color.white);//color de fondo
table.setFont(normal);//tipo de fuente
table.setForeground(Color.black);//color de texto
setHorizontalAlignment(2);//derecha
if(isNumber(String.valueOf(table.getValueAt(row,co lumn)))){
setHorizontalAlignment(4);//izquierda
}

System.out.println (" Estoy ebn pintar -- row:"+row+"column :"+column);
if((new Boolean (table.getValueAt(row, 9).toString()).booleanValue())) {
System.out.println (" PINTO");
setBackground(Color.green);
if (column ==9) {
setBackground (Color.green);
}

}
if (column!=9) {
super.getTableCellRendererComponent(table, value, selected, focused, row, column);
}else {
super.getTableCellRendererComponent(table, (Boolean)value, selected, focused, row, column);
}
/*if((new Boolean (table.getValueAt(row, 9).toString()).booleanValue())) {
System.out.println (" PINTO");
setBackground(Color.green);
if (column ==9) {
setBackground (Color.green);
}
} */
return this;
}

//Funcion que comprueba si la cadena realmente es un numero
private boolean isNumber(String cadena){
try {
Double.parseDouble(cadena.replace(",", ""));
} catch (NumberFormatException nfe){
String newCadena = cadena.replace(".", "").replace(',', '.');
try{
Double.parseDouble(newCadena);
} catch (NumberFormatException nfe2){
return false;
}
}
return true;
}

}

El problema es que si lo hago así la última columna no me muestra el chechkbox sino que me muestra el string tue o false si esta pulsado el check por defecto.. Entiendo que es que pierde la el tipo de clase de la columna por el camino, pero no consigo saber por que.....


un saludo.. .Espero vuestra ayuda.

Etiquetas: checkbox, clases, render, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:09.