我的JTable
列数很少。我有JComboBox
。在程序启动时我希望它们是空的。我有一个JButton
按钮的单击操作我有代码在表中动态添加行。
但是在添加行之后,我在具有JComboBox
的单元格中获得了垃圾值。如下图所示:
以下是代码:
在表
中添加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();
}
});
如何从表中删除此垃圾值?请帮忙
答案 0 :(得分:4)
addRow(...)方法将1维数组作为参数。您正在尝试添加二维数组。
另外,请勿使用:
tableModel.fireTableDataChanged();
TableModel的工作是调用相应的fireXXX()方法,在这种情况下,{x}方法将fireTableRowsInserted(...)
。