Méthode de recherche dans une table (interface graphique)

bella katrin Messages postés 35 Statut Membre -  
faseldi Messages postés 314 Statut Membre -
bonjour ;
j'ai un tp de gestion des notes d'étudiant avec une interface graphique je fait les méthodes de l'ajout et suppression mais j'ai un problème dans la méthode de recherche par note < 10 , quand je veux récupérer la note pour faire un teste il m'affiche :

(Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 5 >= 5
at java.util.Vector.elementAt(Unknown Source)
at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source))

et voila la méthode de recherche aidez moi svp ;

item7.addActionListener(new ActionListener(){
    
    public void actionPerformed(ActionEvent arg0) {
     
    
     for (int i=0;i<=10;i++){
     int x=(int)model.getValueAt(i,5); // la note dans la 5 colonne 
     if (x>10)
      model.removeRow(i);
     }
      }
     });
      }  
     }

1 réponse

  1. faseldi Messages postés 314 Statut Membre 20
     
    Si la note est dans la colonne 5, alors il faut marquer model.getValueAt(i,4);
    Dans (tous?) les langages informatique, on commence à compter de 0.
    0
    1. bella katrin Messages postés 35 Statut Membre
       
      j'ai essayer avec 4 avec 5 mais tjrs reste la même erreur .
      0
    2. faseldi Messages postés 314 Statut Membre 20
       
      c'est peut-être i le soucis, tu es sûr que tu dois mettre <= et pas < ? en sachant que ça fait
      0 1 2 3 4 5 6 7 8 9 10 là
      ton model ressemble à quoi ?
      0
    3. bella katrin Messages postés 35 Statut Membre
       
      le i c'est juste pour les lignes , pour parcourir les lignes de la table je suppose qui'il existe 11 lignes
      0
    4. faseldi Messages postés 314 Statut Membre 20
       
      à priori sois tu as moins de 5 colonnes, sois tu as moins de 5 lignes, tu ne peux pas faire model.size() plutôt que i<= 10 ?
      pas évident sans savoir le code de model :)
      0
    5. bella katrin Messages postés 35 Statut Membre
       
      ok voilà mon code :
      package ih;
      
      
      
      import java.awt.Color;
      import java.awt.Container;
      import java.awt.Font;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.awt.event.KeyEvent;
      import java.util.Vector;
      
      import javax.swing.*;
      import javax.swing.table.DefaultTableModel;
      import javax.swing.table.JTableHeader;
      import javax.swing.table.TableRowSorter;
      
      
      public class etudiant extends JFrame{
       
       Container  c;
       JLabel l =new JLabel("nom : ");
       JLabel p =new JLabel("prenom:");
       JLabel s =new JLabel("specialité:");
       JLabel n =new JLabel("note:");
       JLabel id =new JLabel("id:");
       Object[] specialité=new Object[]{"Math et info","science technique","MEDCINE"};
       JComboBox combobox=new JComboBox(specialité);
       
       JTextField l2=new JTextField();
       JTextField l3=new JTextField();
       JTextField l4=new JTextField();
       JTextField l5=new JTextField();
       JTextField l6=new JTextField();
       JMenuBar menubar =new JMenuBar();
       JMenu menu1=new JMenu("fichier");
       JMenu menu2=new JMenu("Edition");
       JMenuItem item1=new JMenuItem("ajouter");
       JMenuItem item2=new JMenuItem("modifier");
       JMenuItem item7=new JMenuItem("rechercher");
       JMenuItem item3=new JMenuItem("supprimer");
       JMenuItem item4=new JMenuItem("copier");
       JMenuItem item5=new JMenuItem("coller");
       JMenuItem item6=new JMenuItem("couper");
       JTable table =new JTable();
       
       Object[] columns = {"id","nom","prenom", "spec","note"};
       
          DefaultTableModel model=new DefaultTableModel();
        
       
       public etudiant(){
        
        this.setBounds(500, 500,700, 340);
        this.setTitle("gestion d'etudiant");
        this.setVisible(true);
        c=this.getContentPane();
        c.setLayout(null);
        c.add(l);
        l.setBounds(10, 70, 100,50);
        c.add(l2);
        l2.setBounds(70,82, 100,25);
        c.add(p);
        p.setBounds(10, 100, 100, 50);
        c.add(l3);
        l3.setBounds(70, 112, 100, 25);
        c.add(s);
        s.setBounds(10, 130, 100, 50);
           c.add(n);
        n.setBounds(10, 160, 100, 50);
        c.add(l5);
        l5.setBounds(70,172, 100, 25);
        c.add(id);
        id.setBounds(10, 190, 100, 50);
        c.add(l6);
        l6.setBounds(70, 202, 100, 25);
        setJMenuBar(menubar);
        menubar.add(menu1);
        menubar.add(menu2);
        menu1.add(item1);
        menu1.add(item2);
        menu1.add(item3);
        menu1.add(item7);
        c.add(combobox);
        combobox.setBounds(70, 142, 100, 25);
        combobox.addItem("informatique");;
        combobox.removeItem("item1");
        menu2.add(item4);
        item4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK));
        menu2.add(item5);
        item5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK));
        menu2.add(item6);
        item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,ActionEvent.CTRL_MASK));
        c.add(table);
        table.setBounds(350, 80, 300, 250);
        model.setColumnIdentifiers(columns);
        table.setModel(model);
         
        Font font =new Font("",5,22);
        
        table.setFont(font);
        table.setBackground(Color.LIGHT_GRAY);
        table.setForeground(Color.MAGENTA);
        table.setRowHeight(30);
        String [] dd={"id"};
        String [] dd2={"nom"};
        String [] dd3={"prenom"};
        String [] dd4={"specialté"};
        String [] dd5={"note"};
        
        for( int i=0;i<=dd.length;i++){
         
         Object[] data ={dd[i],dd2[i],dd3[i],dd4[i],dd5[i]};
      
         model.addRow(data);
       
           
         final Object[]  row=new Object[5];
         item1.addActionListener(new ActionListener(){
          @Override
          public void actionPerformed(ActionEvent arg0) {
           row[0]= l6.getText();
           row[1]= l2.getText();
           row[2]=l3.getText();
           row[3]=combobox.getSelectedItem();
           row[4]=l5.getText();
                        
           model.addRow(row);
       
       
             
           
           }
          });
         item3.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent arg0) {
           
            
              ((DefaultTableModel) table.getModel()).removeRow(table.getSelectedRow());
              
           }
          });
         
         item2.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent arg0) {
           
            
             int i=table.getSelectedRow();
             c.setBackground(new Color(79));
             if(i>=0){
             model.setValueAt(l6.getText(),i,0);
             model.setValueAt(l2.getText(),i,1);
             model.setValueAt(l3.getText(),i,2);
             model.setValueAt(combobox.getSelectedItem(),i,3);
             model.setValueAt(l5.getText(),i,4);
             }
             else{
              System.out.println("ERREUR DE MODIFICATION");
              c.setBackground(new Color(100,80,30));
             }
           }
          });
         
         item7.addActionListener(new ActionListener(){
          
          public void actionPerformed(ActionEvent arg0) {
           
          
           for (int i=0;i<=10;i++){
           int x=(int)model.getValueAt(i,5);
           if (x>10)
            model.removeRow(i);
           }
            }
           });
            }  
           }
          
       
       public static void main(String[] args) {
            new etudiant();
      
       }
      
      }

      EDIT : Ajout des balises de code (la coloration syntaxique).
      Explications disponibles ici : ICI

      Merci d'y penser dans tes prochains messages.
      0