Ayuda con JTable =(

mrmaclio

Bovino maduro
#1
Amigos el problema es el siguiente ... espero me puedan ayudar tengo mas de 2 meses tratando y no puedo entonses pues recurri al corral jejeje...

Mi problema es con un JTable en java hecho en Netbeans 6.8, no lo gro entender como manejar ciertos eventos del JTable ya que mi experiencia con java es casi nula =(

no lo gro comprender como implementar unas clases que investigue espero mepuedan ayudar...

mi problema en concreto es que quiero de la siguiente tabla ...

1.- Desactivar la columna 1 "NL " , "Matricula " y "Nombre del alumno" para que no puedan ser modificadas por el usuario.

2.- En la columna calificacion al momento de teclear una calificacion se concatena conla anterior, lo que pretendo es que se sobreescriba el valor anterior asi como en EXCEL.

3.- Poder colorear una fila completa de algun color dependiendo del valor de la primera celda... por ejemplo colorear la fila donde el NL=5 ...

y otras cosas que creo que se pueden aplicar sobrescribiendo el SetCellRenderer de la TABLA ...



lo unico que eh logrado es ajustar el ancho de las columnas.... =(
Espero alguien me pueda ayudar dejo el codigo que utilizo .. aunque es un poco rudimentario....

public void prepTablaReg() {
String titulos [] ={"Nl.","Matricula","Nombre del Alumno","Calificacion","Faltas"};

m = new DefaultTableModel(null, titulos);
tabla.setModel(m);
TableColumn column = null;
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();
tcr.setHorizontalAlignment(SwingConstants.CENTER);

tabla.getColumnModel().getColumn(0).setCellRenderer(tcr);
tabla.getColumnModel().getColumn(1).setCellRenderer(tcr);
tabla.getColumnModel().getColumn(3).setCellRenderer(tcr);
tabla.getColumnModel().getColumn(4).setCellRenderer(tcr);



//Cambio el ancho de las columnas de la tabla
column = tabla.getColumnModel().getColumn(0);
//column.setPreferredWidth(30);
column.setMinWidth(30);
column.setMaxWidth(30);

//column.setPreferredWidth(30);
column.setMinWidth(30);
column.setMaxWidth(30);

column = tabla.getColumnModel().getColumn(1);
column.setMinWidth(65);
column.setMaxWidth(65);

column = tabla.getColumnModel().getColumn(2);
column.setMinWidth(220);
column.setMaxWidth(220);
column = tabla.getColumnModel().getColumn(3);
column.setMinWidth(60);
column.setMaxWidth(60);
column = tabla.getColumnModel().getColumn(4);
column.setMinWidth(60);
column.setMaxWidth(60);

}

Espero me puedan ayudar .... lo que quiero hacer es parecido a lo que hace "Monillo007"
http://monillo007.blogspot.com/2009/05/cambiar-el-aspecto-de-las-celdas-de-un.html

PERO!! no logro adaptarlo a mi aplicacion :eolo: disculpen mi ignorancia ...

De antemano muchas gracias ... espero que de verdad me ayuden





 
#3
hmmm, pues así como lo veo lo más adecuado sería que no instanciaras la tabla o mejor dicho el modelo de tabla con un default table model, porque este tiene como lo dice su nombre, todos los eventos administrados y ciertas propiedades como muy "estandar"; sería más adecuado para lo que tu requieres que hicieras una clase que implementara abstract table model, y mediante sus métodos que tienes que implementar indicaras (si no mal recuerdo es el return row count) cuales filas o columnas pueden ser editadas y cuales no así como muchas otras curiosidades que puedes implementar mediante la interfaz.

Si necesitas más info puedes mandarme un mensaje, aunque claro, te recomendaría primero que googlearas la implementación de abstract table model.

Bueno, mucha suerte y si no ya sabes, puedes mandarme un mensaje.

-- SCJP -- Amaro Coria Jorge --
 
Arriba