Utiliser JTable [Résolu]

Manelh 3 Messages postés samedi 7 mars 2009Date d'inscription 11 mars 2009 Dernière intervention - 7 mars 2009 à 23:05 - Dernière réponse : Manelh 3 Messages postés samedi 7 mars 2009Date d'inscription 11 mars 2009 Dernière intervention
- 11 mars 2009 à 12:59
Je doit réaliser une application qui permet de lire la taille d'un tableau,saisir les valeurs(dans un JTable) pour le trier ,mon problème c que je n'arrive pas à récuperer les valeurs à partir du JTable  dans un tableau int[] pour le trie ,

import java.awt.*;
import java.awt.event.*; 
import javax.swing.*;
 
public class tab  extends JFrame {
 JButton b2  = new JButton("Trier");
 JTable tb;
 JTable tb2;
 Integer n;
 JPanel pr;
 int[] T;
 int[] TabTrie;
  JPanel p1=new JPanel();
  JLabel l1=new JLabel("  Introduire la taille du tableau : ");
  JButton b1 = new JButton("Valider");
  JTextField t1=new JTextField();
  public tab(String title){
   super(title);
   addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }});
   GridLayout gl=new GridLayout(2,4);
   //gl.setHgap(5);
   //gl.setVgap(5);
   p1.setLayout(gl);
   p1.add(new JLabel("  "));
   p1.add(new JLabel("  "));
   p1.add(new JLabel("  "));
   p1.add(l1);
   p1.add(t1);
   p1.add(b1);
   JPanel panelPrincipal = new JPanel();
     panelPrincipal.setLayout(new BorderLayout());
     panelPrincipal.add(p1,BorderLayout.NORTH);
    setContentPane(panelPrincipal);
    setBounds(600,400,600,250);
    pack();
    //center();
    b1.addActionListener (new ActionListener(){
     public void actionPerformed(ActionEvent e){
    
      n=new Integer(t1.getText()).intValue();
      System.out.println(n);
     tb = new JTable(1,n);
     // b2 = new JButton("Trier");
      pr=new JPanel();
      pr.setLayout(new BorderLayout());
      pr.add(tb,BorderLayout.WEST);
      pr.add(b2,BorderLayout.EAST);
      add(pr);
      pack();
           
      
      
     }
     


     
    });
    b2.addActionListener (new ActionListener(){
     public void actionPerformed(ActionEvent e){
     //new Traitement("Traitement",new Integer(t1.getText()).intValue());
     
     TabTrie = new int[n];
     T= new int[n];
     System.out.println(n);
     //Récupperer tableau
     for(int i=0;i<n;i++) {
      System.out.println("boucle");
      T[i] =(int)tb.getModel().getValueAt(1,i);
     //T[i] =Integer.parseInt(tb.getValueAt(1,i).toString());
     }

     TabTrie = trietab(T);
     //tb2.setValueAt(TabTrie[1], 0, 1);

     JPanel prs=new JPanel();
     tb2 = new JTable(1,2);
     prs.add(tb2);
      pr.add(prs,BorderLayout.SOUTH);
     
     // add(prs);
      pack();
           
      
      
     }
     


     
    });
    
  }
  public static int[] trietab(int[] tableau){
   /* Déclaration des variables à utiliser pour le tri*/
   int max, iMax, tmp;
   /*
   * Cette première boucle permet de fixer
   * la partie reste à trier du tableau
   */
   for(int j=tableau.length-1; j>0; j--){
   max = tableau[j];
   iMax = j;
   /*
   * Cette partie permet de chercher le maximum
   * dans la partie à trier
   */
   for(int idx=0; idx<=j; idx++){
   if(max < tableau[idx]) {
   max = tableau[idx];
   iMax = idx;
   }
   }
   /* permutation du maximum avec le dernier élément de la partie à trier
   *
   */
   tmp = tableau[j];
   tableau[j] = max;
   tableau[iMax] = tmp;
   }
   /*
   * La méthode retourne le tableau trié en sortie
   */
   return tableau;
   }
  /*void center() {
   Dimension tailleEcran= Toolkit.getDefaultToolkit().getScreenSize();
   int largeurEcran=tailleEcran.width;
   int hauteurEcran=tailleEcran.height;
   int largeur=getSize().width;
   int hauteur=getSize().height;
   int xPos = (largeurEcran-largeur)/2;
   int yPos = (hauteurEcran - hauteur)/2;
   setLocation(xPos,yPos);
  }*/
  public static void main(String[] args) {
   
   tab t= new tab("Traitement d'une table à une dimension");
   t.setVisible(true);
  }


 }
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
amundain 110 Messages postés mercredi 28 mars 2007Date d'inscription 28 août 2012 Dernière intervention - 10 mars 2009 à 12:00
3
Merci
Salut,

Il y a un souci dans ta boucle de recup des valeurs.
Essaie avec ça :

for (int i=0;i<n;i++){

System.out.println("boucle");
T[i]=Integer.parseInt((String)tb.getValueAt(0,i));

}

Les numéros de lignes et colonnes des JTable commencent à 0...
Autre chose, pour la forme et les bonnes conventions, il estde bon ton en Java de nommer ses classes avec la première lettre en majuscule, et les variables en minuscule (ton tableau de int 'T', par exemple devrait s'appeler 't'...).

A +,

amundain

<hr width="100%" size="2" />Java bien,merci.

Merci amundain 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de amundain
Meilleure réponse
amundain 110 Messages postés mercredi 28 mars 2007Date d'inscription 28 août 2012 Dernière intervention - 11 mars 2009 à 08:38
3
Merci
Salut,

L'objet value correspond à ce que tu veux afficher dans ta cellule de jTable.
La méthode prend en paramètre un Object, le niveau le plus élevé de tous les objets, comme ça tu peux lui passer indifféremment du String ou de l'Integer, par exemple :

    setValueAt(55, 0,0);
    setValueAt("55", 0,0);

etc.

A +,

amundain

<hr size="2" width="100%" />Java bien,merci.

Merci amundain 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de amundain
Manelh 3 Messages postés samedi 7 mars 2009Date d'inscription 11 mars 2009 Dernière intervention - 10 mars 2009 à 23:25
0
Merci
Salut amundain !
Je vous remercie beaucoup. ,ça marche mais il me reste un autre problème au niveau de l'affichage du tableau trié ds un JTable , je sais que je doit utiliser la méthode :   public void setValueAt(Object value, int row, int col),mais je ne comprend pas le parametre object value !!?
Merçi d'avance
A+
Commenter la réponse de Manelh
Manelh 3 Messages postés samedi 7 mars 2009Date d'inscription 11 mars 2009 Dernière intervention - 11 mars 2009 à 12:59
0
Merci
Salut !
Merci beaucoooooooooooooooooooooup!
mais juste une remarque ,lorsque je saisie les valeurs du tableau ,je doit cliquer kk part de la fenêtre de tel façon que la dernière cellule sera sélectionné ,sinon il me singale une exeption! je vous remercie encore une fois
A+
Commenter la réponse de Manelh

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.