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

Fermé
bella katrin Messages postés 31 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 8 mai 2017 - Modifié par baladur13 le 31/12/2015 à 09:59
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 - 1 janv. 2016 à 17:35
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);
     }
      }
     });
      }  
     }
A voir également:

1 réponse

faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
28 déc. 2015 à 21:38
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
bella katrin Messages postés 31 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 8 mai 2017
28 déc. 2015 à 21:57
j'ai essayer avec 4 avec 5 mais tjrs reste la même erreur .
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
28 déc. 2015 à 22:16
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
bella katrin Messages postés 31 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 8 mai 2017
29 déc. 2015 à 07:19
le i c'est juste pour les lignes , pour parcourir les lignes de la table je suppose qui'il existe 11 lignes
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
29 déc. 2015 à 21:58
à 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
bella katrin Messages postés 31 Date d'inscription samedi 5 janvier 2013 Statut Membre Dernière intervention 8 mai 2017
Modifié par baladur13 le 31/12/2015 à 09:58
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