我有一个带有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;
}
}
答案 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));