JTable仅显示4行数据

时间:2017-06-13 14:31:35

标签: java jtable

我有一个sqlite数据库,我从一个带有大量数据的arraylist中添加数据,但是这个表只显示了4行,我尝试用jswing属性设置表,但没有好运。 只显示这个:

https://i.stack.imgur.com/NbfVK.png

表格显示了这个白色区域。我认为是行的限制区域

并显示此区域:

https://i.stack.imgur.com/SWW5p.png

我想在表格中显示列表中的所有数据,我的意思是不确定的行。

Estaréagradecidosi me ayudan con este problema。

抱歉我的英文。

代码:

public void llenarTabla()
{
    System.out.println("Inicio de llenado de tabla..");
    //registrosTbl.removeAll();
    DefaultTableModel model;

    model = (DefaultTableModel) registrosTbl.getModel();
    int filas= model.getRowCount();
    if (model.getRowCount() > 0) {
        System.out.println("Vaciado de tabla...");
        for (int i = model.getRowCount() - 1; i > -1; i--) 
        {
            model.removeRow(i);
            System.out.println("Eliminada fila: "+i);
        }
        System.out.println("Fin vaciado de tabla...");
    }
    List<Registro> lista = new ArrayList<Registro>();
    lista = FuncionesDB.mostrarTodo();

    if(lista.isEmpty())
    {            
        jScrollPane1.setVisible(false);
        registrosTbl.setVisible(false);

        JLabel mensaje = new JLabel();
        mensaje.setText("No se han realizado consultas");
        mensaje.setForeground(Color.WHITE);
        mensaje.setBounds(250, 180, 330, 40);
        mensaje.setVisible(true);

        RegPnl.add(mensaje);


    }else{
        Object rowData[] = new Object[13];
        System.out.println("Llenando tabla...");
        for(int i =0; i< lista.size(); i++)
        {
            System.out.println("numero "+i);

            rowData[0]= lista.get(i).getId();
            rowData[1]= lista.get(i).getNombreNeg();
            rowData[2]= lista.get(i).getEdad();
            rowData[3]= lista.get(i).getCostoProd();
            rowData[4]= lista.get(i).getSueldo();
            rowData[5]= lista.get(i).getUtilidades();
            rowData[6]= lista.get(i).getFormaPago();
            rowData[7]= lista.get(i).getNegocio();
            rowData[8]= lista.get(i).getSexo();
            rowData[9]= lista.get(i).getCompatibilidad();
            rowData[10]= lista.get(i).getRelacionPS();
            rowData[11]= lista.get(i).getResumen();
            rowData[12]= lista.get(i).getFecha();
            model.addRow(rowData);
        }
    }
            System.out.println("Fin llenado..");
}

1 个答案:

答案 0 :(得分:0)

创建一个新的(Default-)TableModel,声明只有4行:

public class TableModelWith4rowsOnly{
    public static void main(String[] args) {
        TableModel completeDataFromDatabase = getQeryResultFromDatanaseAsTableModel();
        DefaultTableModel tableModelWith4rowsOnly = new DefaultTableModel(4, completeDataFromDatabase.getColumnCount()) {

            @Override
            public Object getValueAt(int row, int column) {
                return completeDataFromDatabase.getValueAt(row, column);
            }

        };
        JTable jTable = new JTable(tableModelWith4rowsOnly);
        JOptionPane.showMessageDialog(null, jTable);
    }

    private static TableModel getQeryResultFromDatanaseAsTableModel() {
        TableModel completeDataFromDatabase = new DefaultTableModel(10, 3) {
            @Override
            public Object getValueAt(int arg0, int arg1) {
                return "value" + new Random().nextInt(4);
            }
        };
        return completeDataFromDatabase;
    }
}