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

Ayuda con jtable

Estas en el tema de Ayuda con jtable en el foro de Java en Foros del Web. Que tal !!! Estoy tratando de implementar un jtable donde las filas son cargadas desde una base de datos, ademas la ultima columna de cada ...
  #1 (permalink)  
Antiguo 23/04/2010, 08:28
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Ayuda con jtable

Que tal !!!

Estoy tratando de implementar un jtable donde las filas son cargadas desde una base de datos, ademas la ultima columna de cada fila tiene un check que permite seleccionar registros. He estado estudiando el howto de sun pero no he dado con la solución. Como puedo reemplazar la asignación de datos a la variable Object[][] por el resultado de una consulta ?????

Saludos.
  #2 (permalink)  
Antiguo 23/04/2010, 10:05
 
Fecha de Ingreso: diciembre-2001
Ubicación: Asuncion
Mensajes: 143
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Ayuda con jtable

Podrias utilizar la clase DefaultTableModel

Código Javascript:
Ver original
  1. DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
  2. modelo.setNumRows(0);
  3. while( rs.next() )
  4. {
  5.     modelo.addRow( new Object[] {
  6.         rs.getString("campo1"),
  7.         rs.getString("campo2"),
  8.         rs.getString("campo3") }
  9.     );
  10. }
  #3 (permalink)  
Antiguo 23/04/2010, 11:46
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Ayuda con jtable

Muchas gracias por la sugerencia, hasta el momento habia usado el DefaultModel para hacer las tablas, pero ahora no puedo porque no se como decirle que una columna no puede editarse y que el ultimo campo debe ser un check.

Saludos.
  #4 (permalink)  
Antiguo 24/04/2010, 10:18
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Ayuda con jtable

Sigo con mi problema, esto es lo que tengo hasta el momento:

Código:
public class TablaLiberar extends JPanel {
     private double cedula;

public TablaLiberar(double cedula) {
        super(new GridLayout(1,0));
        this.cedula = cedula;

        JTable table = new JTable();

        DefaultTableModel modelo = (DefaultTableModel) table.getModel();
        modelo.setColumnCount(5);
        modelo.setRowCount(0);

        modelo.setColumnIdentifiers(new Object[]   
        {"nombre","apellido","deporte","edad","opcion"});

        Prestamo prestamo = new Prestamo();
        ArrayList<String> colPrestamos = new ArrayList<String>();
        ArrayList<String> temporal = new ArrayList<String>();
        colPrestamos = prestamo.getOperacionesEmpleado(this.cedula);
        int i;

        for(i=0;i<colPrestamos.size();i++){
             if(!colPrestamos.get(i).equals("-")){
                 temporal.add(colPrestamos.get(i));
             }else{
                 modelo.addRow(new Object[] {
                 temporal.get(0), temporal.get(1),  temporal.get(2), temporal.get(3), 
                 new Boolean(true)
                 });
                 temporal.clear();
             }
         }

        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
        table.setFillsViewportHeight(true);

        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);

        //Add the scroll pane to this panel.
        add(scrollPane);

    }

}
Este metodo me permite llenar el jtable con los datos de una consulta, pero no me toma la última columna con un checkbox, además como puedo decirle que no permita editar las celdas ?

Saludos.
  #5 (permalink)  
Antiguo 24/04/2010, 11:21
 
Fecha de Ingreso: mayo-2006
Mensajes: 101
Antigüedad: 17 años, 11 meses
Puntos: 2
Respuesta: Ayuda con jtable

por que no utilizas esto

String aux="";
int fila = jTable3.rowAtPoint(evt.getPoint());
int columna = jTable3.columnAtPoint(evt.getPoint());
if ((fila > -1) && (columna > -1))
aux=""+jTable3.getValueAt(fila,columna);

De esta forma forma obtienes cualquier dato al dar click en la jTable, si solo quieres uno en especifico validas los demas datos, suerte...
  #6 (permalink)  
Antiguo 25/04/2010, 12:27
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Ayuda con jtable

Hola:

Para hacer editable o poner el checkbox debes hacerte un modelo propio, no te vale DefaultTableModel.

La forma más sencilla es heredar de DefaultTableModel y sobreescribir los métodos isCellEditable() para devolver true o false según te interese y getColumnClass() para que devuelva Boolen.class en la columna en la que quieres checkbox y Object.class en el resto (o cualquier otra cosa que quieras, como String.class, Number.class, etc).

Tienes ejemplos concretos de estos dos casos en http://www.chuidiang.com/chuwiki/index.php?title=JTable

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 27/04/2010, 09:08
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Ayuda con jtable

Muchas gracias por el enlace !!!

Lo he mirado y adaptado a mi necesidad, pero aun me queda una duda: en el metodo getColumnClass le indico que a una columna que es boolean tal y como esta en el ejemplo pero eso me genera el siguiente error:

"java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean"

A que se debe esto ?

Saludos.
  #8 (permalink)  
Antiguo 27/04/2010, 10:25
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Ayuda con jtable

Pues que en el modelo de datos tienes que meter Boolean y no String para esa columna.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 27/04/2010, 11:01
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Ayuda con jtable

Gracias por responder !!!!

Funcionó perfectamente, solo tuve que indicar esto en el modelo:

Código:
fila[4] = new Boolean(false);
muchas gracias por hacerme notar mi error.

Saludos.

Etiquetas: jtable
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 17:27.