单击JButton后更新JTable

时间:2011-11-22 03:24:07

标签: java swing jtable jframe rows

当我点击按钮“促销”时,表格必须显示在第一行,我销售的商品,以及它的数量。但是当我第二次单击时,它会删除最后一行,并创建一个新表。如何使用新数据创建新行? 这是我的代码:

if (e.getSource()==sale)
    {
        int tempcod=0,tempcant=0; //tempcod is the code of the product,
       temocant is the number of products sold

    final DefaultTableModel model = new DefaultTableModel();

        model.addColumn("Product");
        model.addColumn("Price");

        try
        {
        tempcod=Integer.parseInt(cod.getText());
        tempcant=Integer.parseInt(quantity.getText());
        }
        catch(NumberFormatException a)
        {
            JOptionPane.showMessageDialog(null, "Invalid Number");
        }

        for (int j=0;j<nulo; j++) //nulo is the number of items at sale
        {

            if (tempcod==codigo[j]) //id the code i wrote exist in 
                                      the list of products
            {
                for (int k=0; k<nulo; k++)
                {
                    if (tempcod==ventaActual[0][k])
                    {
                        ventaActual[1][k]+=tempcant;
                    }
                    else
                    {
                    ventaActual[0][k]=tempcod;
                    ventaActual[1][k]=tempcant;
                    }
                }

                model.insertRow(model.getRowCount(), new Object[]{item[j],price[j]*tempcant});//this line creates the row of the table.
          //item[] is the name of the item, price[] is the price of the item
                JTable Lista= new JTable(model);
                lista1=new JScrollPane(Lista);
                lista1.setBounds(170,150,200,200);
                lista1.setEnabled(false);
                lista1.setVisible(true);
                this.add(lista1);

                a+=(tempcant*precio[j]);
                String b=Integer.toString(a);
                tot.setText(b);
                ventaInforme=ventaActual;
            }
            else
            {
                cod.setText(null);
                cantidad_n.setText(null);
            }
        }
    }

1 个答案:

答案 0 :(得分:3)

您对model.insertRow的调用应该在表中插入一行并触发表的必要事件以进行更新。但是,您需要从现有表中获取现有模型,然后更新该模型。

e.g。 DefaultTableModel model =(DefaultTableModel)myTable.getModel();

您可能还应该删除创建的代码并将新表添加到容器中,除非这是您想要的。