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

No puedo listear en el jTable pero sí en jComboBox

Estas en el tema de No puedo listear en el jTable pero sí en jComboBox en el foro de Java en Foros del Web. Hola a todos amigos de foros del web, soy nuevo en java y tengo un problema tratando de obtener los campos de una tabla CATEGORIA(codigo_categoria, ...
  #1 (permalink)  
Antiguo 11/11/2009, 15:12
 
Fecha de Ingreso: julio-2009
Mensajes: 32
Antigüedad: 15 años, 3 meses
Puntos: 0
No puedo listear en el jTable pero sí en jComboBox

Hola a todos amigos de foros del web, soy nuevo en java y tengo un problema tratando de obtener los campos de una tabla CATEGORIA(codigo_categoria, nombre) para mostralo en una JTable, lo "curioso" del asunto es que si puedo mostrar las categorias en una jComboBox pero no puedo mostrarlos en el JTable.

Aquí el código de las clases:
================================================== ==========
public class _Categoria {
private int codigo;
private String nombre;
//con sus respectivos JavaBeans además de sobreescribir el método ToString, porque sino muestra información incorrecta en el JComboBox
Override
public String toString(){
return this.getNombre();
}
}
================================================== ==========
public interface _GeneralDao {
//una interfaz con los metodos para hacer los mantenedores de las tablas
public void ingresar(Object object) throws SQLException;
public void retirar(int codigo) throws SQLException;
public void actualizar(Object object)throws SQLException;
public Object buscar(int codigo)throws SQLException;
}
================================================== ==========
public interface _CategoriaDao extends _GeneralDao{
//una intefaz que hereda de _GeneralDao con métodos específicos, en este caso declaro el método obtenerListaCategoria() para listear todas las categorias
public Vector obtenerListaCategoria() throws SQLException;
}
================================================== ==========
public class _CategoriaDaoImpl implements _CategoriaDao{
//el método obtenerListaCategoria() es para listear todas las categorías
private Connection con=null;
public _CategoriaDaoImpl(Connection con){
this.con=con;
}
public Vector obtenerListaCategoria() throws SQLException {
Vector listaCategoria=new Vector();
String sql="SELECT CODIGO_CATEGORIA, NOMBRE FROM CATEGORIA";
Statement stm=con.createStatement();
ResultSet rs=stm.executeQuery(sql);

while(rs.next()){
_Categoria categoria=new _Categoria();
categoria.setCodigo(rs.getInt("CODIGO_CATEGORIA")) ;
categoria.setNombre(rs.getString("NOMBRE"));
listaCategoria.add(categoria);
}
return listaCategoria;
}
================================================== ==========
public class _CategoriaLogic {
//2 métodos, el primero listea en el JComboBox1 bien!!!!, el segundo intenta hacer lo mismo.

public static DefaultComboBoxModel obtenerModeloCategoria() throws Exception {
DefaultComboBoxModel categoriaComboModel=null;
try{
Connection con=_Conexion.getConnection();
_CategoriaDao categoriaDao=new _CategoriaDaoImpl(con);
Vector vectorCategoria=categoriaDao.obtenerListaCategoria ();

categoriaComboModel=new DefaultComboBoxModel(vectorCategoria);
}catch(Exception e){
e.printStackTrace();
throw e;
}
return categoriaComboModel;
}

public static DefaultTableModel obtenerListaCateModel() throws Exception{
DefaultTableModel cateTableModel=null;
Connection con=null;

try {
con=_Conexion.getConnection();
_CategoriaDao productoDaos=new _CategoriaDaoImpl(con);
Vector datos=productoDaos.obtenerListaCategoria();// .obtenerListaProducto(codigoCategoria);
Vector columnas=new Vector();
columnas.add("CODIGO");
columnas.add("NOMBRE");
cateTableModel =new DefaultTableModel(datos,columnas);
} catch (Exception e) {
throw e;
} finally{
if(con!=null)
con.close();
}
return cateTableModel;
}
}
}
================================================== ==========
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// aca obtengo el modelo del jTable, pero sale el error
try {
tableModelCate=_CategoriaLogic.obtenerListaCateMod el();
jTable1.setModel(tableModelCate);
//obtenerListaCateModel(jTable1);
} catch (Exception e) {
e.printStackTrace();
}
}
================================================== ==========
//ERROR: JAVA.LANG.CLASSCASTEXCEPTION: AVICOLA.SISVENTA.MODELO.BEAN._CATEGORIA CANNOT BE CAST TO

JAVA.UTIL.VECTOR

Al parecer es un error de "casteo" pero nose ni donde debo hacer eso, ni por qué, pues para mostrar los datos en el

JComboBox no necesité :/ Ayúdenme porfavor :(

Última edición por christmetal; 11/11/2009 a las 15:16 Razón: Interpretación
  #2 (permalink)  
Antiguo 11/11/2009, 17:27
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: No puedo listear en el jTable pero sí en jComboBox

Hola,

public DefaultTableModel(Vector data, Vector columnNames)
http://java.sun.com/javase/6/docs/ap...a.util.Vector)
Parámetros:
data - the data of the table, a Vector of Vectors of Object values columnNames - vector containing the names of the new columns

El problema es que el constructor de 'DefaultTableModel' espera un 'vector de vectores de objetos' (lógicamente puesto que es una tabla). Y el método 'obtenerListaCategoria' devuelve un 'Vector de objetos' solamente.

Código:
public Vector obtenerListaCategoria() throws SQLException {
        Vector listaCategoria=new Vector();
        return listaCategoria; <-- Vector (No Vector of Vectors)
    }
Saludos,

Última edición por HackmanC; 11/11/2009 a las 17:45 Razón: eliminar el código que no era lógico :-D
  #3 (permalink)  
Antiguo 11/11/2009, 17:38
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: No puedo listear en el jTable pero sí en jComboBox

Hola,

Tienes que modificar el código para que tenga la siguiente lógica:

Código:
Vector --->
                 Vector -> Dato1, Dato2
                 Vector -> Dato1, Dato2
                 Vector -> Dato1, Dato2
En el código tienes algo así;

Código:
Vector ---> Dato1, Dato2, Dato3, etc.
Donde DatoX es la clase _Categoria.

Saludos,
  #4 (permalink)  
Antiguo 11/11/2009, 18:31
 
Fecha de Ingreso: julio-2009
Mensajes: 32
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: No puedo listear en el jTable pero sí en jComboBox

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,

Tienes que modificar el código para que tenga la siguiente lógica:

Código:
Vector --->
                 Vector -> Dato1, Dato2
                 Vector -> Dato1, Dato2
                 Vector -> Dato1, Dato2
En el código tienes algo así;

Código:
Vector ---> Dato1, Dato2, Dato3, etc.
Donde DatoX es la clase _Categoria.

Saludos,
En tu primera respuesta habias puesto código, pero despues hice actualizé y vi que lo habias borrado :(, como ya te habrás dado cuenta soy novatoide en esto y quisiera que me proporcionaras el código que me permita mostrar mi tabla con los datos porfa.
  #5 (permalink)  
Antiguo 11/11/2009, 19:12
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: No puedo listear en el jTable pero sí en jComboBox

Hola,

Lo que sucede es que el código no lo he probado, aunque supongo que posiblemente funcione bien.

Código:
public Vector obtenerListaCategoria() throws SQLException {
    Vector a = new Vector();
    String sql="SELECT CODIGO_CATEGORIA, NOMBRE FROM CATEGORIA";
    Statement stm=con.createStatement();
    ResultSet rs=stm.executeQuery(sql);

    while (rs.next()) {
        Vector listaCategoria=new Vector();
        // _Categoria categoria=new _Categoria();
        // categoria.setCodigo(rs.getInt("CODIGO_CATEGORIA")) ;
        // categoria.setNombre(rs.getString("NOMBRE"));
        listaCategoria.add(rs.getString("CODIGO_CATEGORIA"));
        listaCategoria.add(rs.getString("NOMBRE"));
        a.add(listaCategoria);
    }
    return a;
}
Lo que tienes que hacer es crear un Vector() principal que contenga un Vector() por cada registro (tupla, fila) de la base de datos, estos Vectores contienen un valor por cada campo (columna) que representa una celda en la tabla.

Es decir, en este caso no es lógico aplicar la clase _Categoría, puesto que cada valor en dichos Vectores son una celda de la tabla, mientras que en tu clase _Categoría está el código y el nombre (aunque solamente sea visible el nombre por la sobrecarga del método toString()).

Saludos,
  #6 (permalink)  
Antiguo 12/11/2009, 09:54
 
Fecha de Ingreso: julio-2009
Mensajes: 32
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: No puedo listear en el jTable pero sí en jComboBox

Funciono amigo HackmanC !!!!!!!, lo que sí amigo el método toString() es útil para mostrar los datos en el jComboBox, porque de no sobreescribir ese método salen cosas como @fid4df en lugar de mostrar los nombres. Para mostrar los datos en el jTable no es necesario sobreescribir nada :D.Muchas gracias ;) Un fuerte abrazo.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:22.