Обновить JTable после нажатия кнопки JButton - PullRequest
0 голосов
/ 22 ноября 2011

Когда я нажимаю кнопку «Продажа», в таблице в первой строке должно отображаться, какой товар я продал и сколько он стоил.Но когда я нажимаю второй раз, он удаляет последнюю строку и создает новую таблицу.Как я могу создать новую строку с новыми данными?Это мой код:

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 Ответ

3 голосов
/ 22 ноября 2011

Ваш вызов model.insertRow должен вставить строку в таблицу и запустить необходимые события для обновления таблицы.Однако вам нужно получить существующую модель из существующей таблицы, а затем обновить эту модель.

например, DefaultTableModel model = (DefaultTableModel) myTable.getModel ();

Вероятно, вам также следует избавиться от кода, который создает и добавляет новую таблицу в ваш контейнер, если вы этого не хотите.

...