0

当我在 JTable 中添加新行时,多次重复此行

在此处输入图像描述

此方法更新 Jtable

public final void tableaucomande(){

((DefaultTableModel)tabcommande.getModel()).getDataVector().clear();
Session S=HibernateUtil.getSessionFactory().openSession();

Criteria cr1= S.createCriteria(Commande.class);
List <Commande> lcs=cr1.list() ;
Criteria cr2= S.createCriteria(LigneCommande.class);
List <LigneCommande> lck=cr2.list() ;

if(lcs.size()!=0 && lck.size()!=0)
{

    for (Commande lc:lcs)
    {

        for(LigneCommande lig:lck){
            ((DefaultTableModel)tabcommande.getModel()).addRow(new Object[]{

                    lc.getId_cmd(),lc.getNumcmd(),lc.getDate_cmd(),lc.getClient().getNomPrenom(),
                    lig.getProduit().getLib_prd(),lig.getQuantite(),lig.getProduit().getId_prd()

            });

        }  }

    // tabcommande.setRowSelectionInterval(tabcommande.getRowCount()-1,tabcommande.getRowCount()-1);
}
}

这是我添加数据的代码,而不是表中显示的行

    Session S=HibernateUtil.getSessionFactory().openSession();
    Transaction tx= S.beginTransaction();
    ApplicationContext context3 = new ClassPathXmlApplicationContext("Beans.xml");
    CommandeService cos = (CommandeService)context3.getBean("commandeService");
    ClientService cls = (ClientService)context3.getBean("clientService");
    ProduitService ps =(ProduitService)context3.getBean("produitService");
    LigneCommandeService lcms =(LigneCommandeService)context3.getBean("ligneCommandeService");

    Commande cm = new Commande();

    int Qunt=Integer.parseInt(jTextField5.getText());

    int idp=Integer.parseInt(produit.getModel().getValueAt(produit.getSelectedRow(), 0).toString());
    Produit pro=ps.rechProduit(idp);

    String tonNom = String.valueOf(jComboBox4.getSelectedItem());
    Criteria q =S.createCriteria(Client.class)
            .add(Restrictions.eq("nomPrenom",tonNom));
    List l=q.list();
    Iterator i2=l.iterator();
    while(i2.hasNext())
    {

        idclients = ((Client)i2.next()).getIdClient();
    }
    Client c1=cls.rechClient(idclients);
    cm.setNumcmd(Integer.parseInt(jTextField1.getText()));
    cm.setDate_cmd(jDateChooser2.getDate());
    cm.setDelailivr_cmd(jDateChooser4.getDate());
    cm.setLieulivr_cmd(jComboBox7.getSelectedItem().toString());
    cm.setModelivr(jComboBox1.getSelectedItem().toString());
    cm.setEtat_cmd(jComboBox2.getSelectedItem().toString());
    cm.setModepaiement(jComboBox3.getSelectedItem().toString());
    cm.setMontant_cmd(jTextField8.getText());
    cm.setPrixtotallivr(jTextField9.getText());
    //  cos.enregCommande(cm);
    c1.getCommandes().add(cm);
    cm.setClient(c1);
    cm.setId_cmd(Integer.parseInt(tabcommande.getValueAt(tabcommande.getSelectedRow(), 0).toString()));

    cos.modifCommande(cm);

    cls.modifClient(c1);

    int[] rows = produit.getSelectedRows();
    if(rows.length>0){
        DefaultTableModel model = (DefaultTableModel) produit.getModel(); //a3mel cast lena
        for(int j=rows.length-1; j>=0; j--){
            int prodId = (Integer) produit.getValueAt(rows[j], 0); // 0 houwa colonne number; ma tensech cast int normalement
            Produit p = ps.rechProduit(prodId);
            LigneCommande lm1=new LigneCommande(Qunt,cm, p);

            lcms.modifLigneCommande(lm1);

        }

    } 
    JOptionPane.showMessageDialog(null, "Modification de commande Avec Succes",
            "Succés", JOptionPane.INFORMATION_MESSAGE);
}
else

    JOptionPane.showMessageDialog(null, "Selectionner Une Ligne de produit",
            "Information", JOptionPane.WARNING_MESSAGE);

initc();
// TODO add your handling code here:
}  
4

0 回答 0