为什么在框架中看不到我的Jtable?

时间:2014-04-27 12:27:10

标签: java swing jtable jframe

我有一个带有JTable的JFrame,但是当代码启动JFrame时,它不显示Jtable组件,框架显示为空但是对象"数据"这是正确的。

此框架在登录屏幕之前启动。

这是JFrame代码:

public class PrincipalWindow {

    private void initialize() {
        Principal principal = new Principal();
        DefaultTableModel modelo = new DefaultTableModel();

        JTable table = new JTable(modelo);
        JFrame f = new JFrame();

        modelo = principal.inicializaModelo();

        f.setBounds(10, 10, 800, 600);
        f.getContentPane().add(new JScrollPane(table));


        f.setVisible(true);

    }
}

Principal.java

public class Principal {
    List<CatalogoVO> listaCatalogo;


    public List<CatalogoVO> getListaCatalogo() {
        return listaCatalogo;
    }


    public void setListaCatalogo(List<CatalogoVO> listaCatalogo) {
        this.listaCatalogo = listaCatalogo;
    }

    public DefaultTableModel inicializaModelo(){
        DefaultTableModel modelo = new DefaultTableModel();
        CatalogoDAO catalogoDAO = new CatalogoDAO();

        modelo.addColumn(Constantes.COL_REGISTRO);
        modelo.addColumn(Constantes.COL_MATERIA);
        modelo.addColumn(Constantes.COL_TITULO);
        modelo.addColumn(Constantes.COL_TEXTO);
        modelo.addColumn(Constantes.COL_FECHA);
        modelo.addColumn(Constantes.COL_CONVOCATORIA);
        modelo.addColumn(Constantes.COL_LUGAR);
        modelo.addColumn(Constantes.COL_IDIOMA);
        modelo.addColumn(Constantes.COL_DESCRIPCION);
        modelo.addColumn(Constantes.COL_INGRESO);
        modelo.addColumn(Constantes.COL_UBICACION);
        modelo.addColumn(Constantes.COL_SOPORTE);
        modelo.addColumn(Constantes.COL_DIMENSIONES);
        modelo.addColumn(Constantes.COL_IMPRESOR);
        modelo.addColumn(Constantes.COL_DEPOSITO);
        modelo.addColumn(Constantes.COL_CONSERVACION);
        modelo.addColumn(Constantes.COL_OBSERVACIONES);

        listaCatalogo = catalogoDAO.getListaCompleta();

        Object [] datos; //Crea un vector
        for(int i=0;i<listaCatalogo.size();i++){
            datos = new Object[19];
            datos[0] = listaCatalogo.get(i).getRegistro();
            datos[1] = listaCatalogo.get(i).getMateria();
            datos[2] = listaCatalogo.get(i).getTipoDocumental();
            datos[3] = listaCatalogo.get(i).getTitulo();
            datos[4] = listaCatalogo.get(i).getTexto();
            datos[5] = listaCatalogo.get(i).getFecha();
            datos[6] = listaCatalogo.get(i).getConvocatoria();
            datos[7] = listaCatalogo.get(i).getLugar();
            datos[8] = listaCatalogo.get(i).getIdioma();
            datos[9] = listaCatalogo.get(i).getDescripcion();
            datos[10] = listaCatalogo.get(i).getAutor();
            datos[11] = listaCatalogo.get(i).getFormaIngreso();
            datos[12] = listaCatalogo.get(i).getUbicacion();
            datos[13] = listaCatalogo.get(i).getSoporte();
            datos[14] = listaCatalogo.get(i).getDimensiones();
            datos[15] = listaCatalogo.get(i).getImpresor();
            datos[16] = listaCatalogo.get(i).getDepositoLegal();
            datos[17] = listaCatalogo.get(i).getConservacion();
            datos[18] = listaCatalogo.get(i).getObservaciones();

            modelo.addRow(datos);

        }

        return modelo;
    }
}

3 个答案:

答案 0 :(得分:3)

让我们逐行分析代码:

DefaultTableModel modelo = new DefaultTableModel();

在这里创建一个空表模型

JTable table = new JTable(modelo);

在此使用此空表模型

创建表
modelo = principal.inicializaModelo();

在这里,您使用非空表模型重新分配modelo变量。该表仍在使用空表模型。

你想要的是:

DefaultTableModel modelo = principal.inicializaModelo();
JTable table = new JTable(modelo);

答案 1 :(得分:0)

那是因为您的JTable仍然有一个空模型。您首先需要初始化您的模型,然后创建JTable(或之后使用table.setModel(model)设置模型。

答案 2 :(得分:0)

更改此行

f.getContentPane().add(new JScrollPane(table));

到这一行

f.setContentPane(new JScrollPane(table));