有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法在JTable上填充数据

我需要使用JTable填充数据。我参考了一些博客,但仍然找不到它没有被填充的原因

从Java应用程序创建以下大型机

    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) 个答案

  1. # 1 楼答案

    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的行数