Question

I have JTable which has few columns.In that I have JComboBox. At program start I want them to be empty.I have one JButton on click action of button i have the code to add row dynamically in table.

But after adding the row i get garbage value in the cell having JComboBox. As shown in below figure :

enter image description here

And here is the code :

Code to add JComboBox in table

// 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);
}

Code to add row dynamically on button click :

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

What should i do to remove this garbage value from table? Please help

Was it helpful?

Solution

The addRow(...) method takes a 1-Dimensional array as a parameter. You are attempting to add a 2-Dimensional array.

Also, do not use:

tableModel.fireTableDataChanged();

it is the job of the TableModel to invoke the appropriate fireXXX() method, which by the way in this case would be fireTableRowsInserted(...).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top