动态添加行后jtable中的垃圾值

时间:2014-06-02 18:03:19

标签: java swing jtable garbage

我的JTable列数很少。我有JComboBox。在程序启动时我希望它们是空的。我有一个JButton按钮的单击操作我有代码在表中动态添加行。

但是在添加行之后,我在具有JComboBox的单元格中获得了垃圾值。如下图所示:

enter image description here

以下是代码:

在表

中添加JComboBox的代码
// Create columns names
String columnNames[] = { "Item", "Sun Item", "Required Quantity","Price","Gross Amount" };

// Create some data
final String dataValues[][] =
    {
        { "", "", "","","", },
    };

    tableModel = new DefaultTableModel(dataValues, columnNames);

    // Create a new table instance
    table = new JTable( tableModel );

updateItemCombo();
TableColumn itemColumn = table.getColumnModel().getColumn(0);
itemColumn.setCellEditor(new DefaultCellEditor(comboItem));

public void updateItemCombo(){
    Vector<String> s = new Vector<String>();
    try{
        setConnectin();
        String str = "select * from ItemTable";
        stmt = conn.createStatement();
        rs = stmt.executeQuery(str);
        while(rs.next())
        {
            String nm = rs.getString("Item_Name");
            s.add(nm);
        }
        conn.close();
    }catch(Exception e2){
        e2.printStackTrace();
    }
    DefaultComboBoxModel<String> modelData = new DefaultComboBoxModel<String>(s);
    comboItem.setModel(modelData);
}

在按钮点击时动态添加行的代码:

 btnAddOrder.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
            tableModel.addRow(dataValues);
            tableModel.fireTableDataChanged();
        }
    });  

如何从表中删除此垃圾值?请帮忙

1 个答案:

答案 0 :(得分:4)

addRow(...)方法将1维数组作为参数。您正在尝试添加二维数组。

另外,请勿使用:

tableModel.fireTableDataChanged();

TableModel的工作是调用相应的fireXXX()方法,在这种情况下,{x}方法将fireTableRowsInserted(...)