用数据库中的数据填充 JTable

Fill JTable with data from database

我需要使用从数据库加载的数据创建 JTable,但我正在努力将 ArrayList 转换为支持 table 模型的东西。

我需要像这样存储数据:

  loadProducts();
    data = new Object[][]{
            {1, "Big Mac", 100, 1},
            {2, "McChicken", 40, 1},
            {3, "Cheese", 100, 1}

    };

虽然我使用此函数创建 table,但我只从数据库中获取了最后一个元素。 我怎样才能在这里存储数据库中的每一行?

ArrayList<Produkt> productList;

private void createTable() {


    String col[] = {"ID", "name", "price", "category"};
    Object[][] data = new Object[0][];

    DefaultTableModel tableModel = new DefaultTableModel(col, 0);
    productTable.setModel(tableModel);

    for (int i = 0; i < productList.size(); i++) {
        int id = productList.get(i).getId();
        String  name = productList.get(i).getName();
        double price = productList.get(i).getPrice();
        int category = prodcttList.get(i).getCategory();

        data = new Object[][]{
                {id, name, price, category}
        };

    }
    productsTable.setModel(new DefaultTableModel(
            data, col));
}

在每次迭代中,您都在创建一个新矩阵 data,其中仅包含迭代的最后一个产品的信息。这就是您只看到最后一项的原因。这只是一个语法问题。

假设 productList 已经包含数据库的结果,您可以使用列表中的产品数初始化矩阵 data 的行,而列数使用固定的value 4,即要显示的字段数(id、name、price 和 category)。

ArrayList<Produkt> productList;

private void createTable() {
    String col[] = {"ID", "name", "price", "category"};
    
    //Initialize the number of rows of your matrix with the number of products in your list
    Object[][] data = new Object[productList.size()][4];

    //Copy every i-th product field in its corresponding column
    for (int i = 0; i < productList.size(); i++) {
        data[i][0] = productList.get(i).getId();
        data[i][1] = productList.get(i).getName();
        data[i][2] = productList.get(i).getPrice();
        data[i][3] = productList.get(i).getCategory();
    }
    
    productTable.setModel(new DefaultTableModel(data, col));
}