仅选择一次jComboBox项即可将行添加到jTable

时间:2019-01-15 18:47:07

标签: java jtable jcombobox

我要将jCombobox选定的项目添加到jTable,但我只想添加一次并更改该特定单元格的值。
例如: 我已经添加了待售商品,因此当我再次选择同一商品时,与添加新行相比,它必须相应地增加数量和价格计算。
我尝试使用以下代码:

private void jComboBoxActionPerformed(java.awt.event.ActionEvent evt) {                                          
    DefaultTableModel df = (DefaultTableModel) jTable.getModel();
    String actionCommand = "comboBoxEdited";
    if (evt.getActionCommand().equals(actionCommand)) {
        Object items = jComboBox.getSelectedItem();
        String name = (String) items;
        String[] part = name.split("\t");
        String item = (part[0]);
        int qty = Integer.valueOf((part[1]));
        double price = Double.parseDouble((part[2]));
        int ids = Integer.valueOf(part[3]);

        int rows = df.getRowCount();
        df.addRow(new Object[]{part[0], part[1], part[2], part[3]});
        for (int i = 0; i < rows; i++) {
            String id = (String) jTable.getValueAt(i, 2);
            if (ids == Integer.valueOf((String) jTable.getValueAt(i, 3))) {
                int qt = qty+1;
                jTable.setValueAt(item, i, 0);
                jTable.setValueAt(qt, i, 1);
                jTable.setValueAt(price * qt, i, 2);
                jTable.setValueAt(ids, i, 3);
            } else {
                df.addRow(new Object[]{part[0], part[1], part[2], part[3]});
            }
        }
    }
}

因此,使用该代码,我只能添加第一行,而再添加一行时,则无法获得所需的行为。

Here is my complete code可以直接签入IDE。
非常感谢。

1 个答案:

答案 0 :(得分:0)

查看下面的程序是否与您所想的相似。请注意,我是如何使用\S*##[^##\s]* 标志来构建逻辑的。

(我已经使用“ _”代替了制表符,因为它在组合框中更加可见。)

在这里,我假设组合框中的“价格”不是单价。它是该组合框项目中全部数量的价格。

found