首页 > 解决方案 > Search Between 可以隐藏过去的 product_Name 交易

问题描述

//这是我的for循环

DefaultTableModel model =(DefaultTableModel)inventory_Table.getModel();
Object[] row = new Object[12];

for(int i = 0; i < Listass.size(); i++) {
    row[1] = Listass.get(i).getType();
    row[2] = Listass.get(i).getProduct();
    row[3] = Listass.get(i).getPacking();
    row[4] = Listass.get(i).getQuantity();
    row[5] = Listass.get(i).getAmount();
    row[6] = Listass.get(i).getSupplier();
    row[7] = Listass.get(i).getPONumber();
    row[8] = Listass.get(i).getUnitPrice();
    row[9] = Listass.get(i).getTDR();
    row[10] = Listass.get(i).getSDR();
    row[0] = Listass.get(i).getDate();
    row[11] = Listass.get(i).getProductNumber();
    model.addRow(row);
}

标签: java

解决方案


考虑以下几行:

Object[] row = new Object[12];
for(int i = 0; i < Listass.size(); i++) {
    ...
    model.addRow(row);
}

您只需为row(新数组)分配 1 个值。因此,您实际上是在模型中多次添加相同的数组引用。addRow不复制数组中的数据 - 它只是存储对它的引用以表示行中的数据。随后的迭代会覆盖该数据,因此所有行最终都会显示最终值。

解决方案是在循环内创建一个新数组:

for(int i = 0; i < Listass.size(); i++) {
    Object[] row = new Object[12];
    ...
    model.addRow(row);
}

现在每一行都指向一个不同的数组。

请注意,您发布的代码存在几个造型师问题。我没有在这里更正任何这些,但您应该阅读 Java 样式指南并尝试符合行业中预期的标准。


推荐阅读