我有一个显示 Object[][] 数据的 JTable。同一屏幕上还有一个表单,允许用户将项目添加到列表中的对象。虽然在我的一生中,当用户按下“添加项目”按钮时,我无法让表中显示的列表更新。
(它可以很好地附加到数组中,我可以将它打印到屏幕上,只是无法更改表格。)
这是桌子的装箱
Object[] tableHeadings = {"Item Name","Qty/Weight","Price"};
ShoppingApplication shoppingApplication = new ShoppingApplication();
Object[][] tableData = shoppingApplication.generatePurchaseTableData();
final JTable tblBill = new JTable(tableData, tableHeadings);
这是正在生成的表数据:
/**
* Generates data in the correct format to go into the table
* from the purchase list
* @return
*/
public Object[][] generatePurchaseTableData(){
Object[][] results = new Object[listOfPurchases.size()][2];
for (int i = 0; i<listOfPurchases.size(); i++){
Purchase purchase = listOfPurchases.get(i);
Object[] innerObject =
{purchase.getProductName(),
purchase.getPricePerUnit(),
purchase.getTotalPrice()};
results[i] = innerObject;
}
System.out.println(results.length);
return results;
}
}
这是动作监听器
/* Add Action Listeners */
cmdAddItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
AddPurchase addPurchase = new AddPurchase(
(radWeight.isSelected()) ? 'w' :(radQty.isSelected()) ? 'q' : 'u',
txtNameOfItem.getText(),
txtAmount.getText(),
txtUnits.getText(),
txtPricePerUnit.getText());
ShoppingApplication sa = new ShoppingApplication();
Object[][] newData = sa.generatePurchaseTableData();
//TODO make tblBill updata it's contents
}
});
从上面的代码来看,我确实没有做太多的努力,但实际上我已经尝试了几个小时,尝试使用不同的方法、数据结构并且没有找到可以直接返回的地方开始了,那就是上面的代码吧。
我在谷歌上搜索了一下,似乎找不到任何东西,想不出为什么没有其他人似乎被困在这个问题上。(也许我只是厚脸皮)但希望这篇文章也能帮助其他人。
提前致谢 :)