无法将对象类型数组添加到JTable

时间:2018-12-28 18:00:01

标签: java swing jtable

我创建了一个对象类型arrayList,但是表仍然没有将其识别为对象并给出了错误

这是它正在产生的错误。

  

找不到适合添加(object [])的方法

下面是使用的代码:

ArrayList<Object> CartItems = new ArrayList<Object>();

cartCheckout.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        Cartgui.setVisible(true);
        for (int i = 0; i < candyList.size(); i++) {
            String name = candyList.get(i).getCandyName();
            int weight = candyList.get(i).getweight();
            int priceLbs = candyList.get(i).getPriceLbs();
            Object[] data = {name, weight, priceLbs};

            Cartgui.add(data);//this line is producing error
        }
    }
});

我希望输出以表格形式显示名称,重量和价格磅。  cartgui是表名

1 个答案:

答案 0 :(得分:0)

myTable.add(something)方法无法执行您的想法。您希望可以做更多类似myTable.getTableModel()。addData(something)的事情,尽管没有这样的addData()方法,但从概念上讲这是正确的。

您可能想做类似的事情

TableModel myModel = new DefaultTableModel(something);
JTable myTable = new JTable(myModel);

其中有一些 something 选项,因为DefaultTableModel具有多个构造函数。

但是,我个人几乎从未使用DefaultTableModel。相反,我做类似的事情

class MyTableModel extends AbstractTableModel {
    //override getRowCount(), getColumnCount(), getColumnName(), getValueAt(), and possibly isCellEditable() and setValueAt()
}

MyTableModel myModel = new MyTableModel(); // or pass parameters since you're writing the constructor(s)
JTable myTable = new JTable(myModel);

因为最终,这种方式通常更容易且更令人满意。

[edit:并且,如果您想从ActionListener调用myModel.addData(something),则必须走AbstractTableModel路由,因为DefaultTableModel不具有该功能。由于MyTableModel是您的类,因此您可以为其编写addData()方法。]

顺便说一句,您的变量 CartItems Cartgui 违反了标准Java编码约定。它们应以小写字母开头。但是,这对您的代码是否有效毫无影响。