无法在JTable上填充数据

时间:2018-08-12 11:54:48

标签: java swing

我需要使用JTable填充数据。我提到的博客很少,但是仍然找不到原因。

在Java应用程序中,创建以下MainFrame

    public static void main(String[] args) {

        MainFrame customerFrame = new MainFrame();
        customerFrame.setVisible(true);
    }

在此框架中,它将加载JDialog(“ CustomerDialog”)。加载对话框时,我编写了以下代码来创建名为“ tblCustomr” 的JTable,并希望在加载“ CustomerDialog”

时加载表数据
public CustomerDialog(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    tblCustomer = new JTable(loadTable());
    initComponents();

}

private DefaultTableModel loadTable(){
    String[] columns = {"Customer Id", "Customer Name", "Customer Address"};
    DefaultTableModel tableModel = new DefaultTableModel();
    for(String col:columns) {
        tableModel.addColumn(col);
    }

    //tblCustomer.add(tableModel);
    List<Object[]> customers = new CustomerService().getAllCustomers();
    for(Object[] obj: customers) {
        tableModel.addRow(obj);
    }
    return tableModel;
}

“ tableModel” 同时包含列和一行。但是它没有显示共享记录中的表记录。no_table_record。记录应该在面板名称的上方明显显示为“客户记录编辑器”。

有人可以告诉我我在这里错过了什么吗,或者这不是正确的方法。

我推荐此博客为“ http://www.kode-blog.com/java-swing-jdbc-crud-example-with-jasper-reports

1 个答案:

答案 0 :(得分:0)

tblCustomer = new JTable(loadTable());

我们不知道是否将表添加到JScrollPane,然后将滚动窗格添加到框架。

String[] columns = {"Customer Id", "Customer Name", "Customer Address"};
DefaultTableModel tableModel = new DefaultTableModel();
for(String col:columns) {
    tableModel.addColumn(col);
}

不要手动创建列。您可以使用:

DefaultTableModel tableModel = new DefaultTableModel(columns, 0);

,然后让DefaultTableModel为您完成工作。

for(Object[] obj: customers) {
    tableModel.addRow(obj);
}

您是否调试了上面的代码以查看是否实际有数据?您可以在循环中添加显示以显示每一行,也可以在循环显示TableModel的行数之后添加