用数据库中的数据填充 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));
}
我需要使用从数据库加载的数据创建 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));
}