IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

jTable comment le manipuler par le code ?


Sujet :

Composants Java

  1. #1
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut jTable comment le manipuler par le code ?
    Bonjour tout le monde

    Ça faisait un moment que je n'avais pas poster ici. Mais il faut bien reprendre la ou je m'en suis arrêter.

    J'utilise, dans un bout de programme java annexe, un jTable. Je viens de passé un moment a regardé la faq, les posts déjà écrit sur le forum mais j'avoue que je ne comprend pas bien le fonctionnement de ce composant.

    Dans mon code, au niveau du constructeur de la fenêtre et après l'initialisation faite par netBeans 6.7, je fait mes propres initialisations. De cette façon j'efface les champs qui doivent l'être, j'arrange par le code ce qui doit l'être.

    Dans ce but, j'aimerais que mon jTable1 puisse affiché un titre mais pas de lignes. Et pour le moment je n'ai qu'une ligne. Quel code faut-il mettre en œuvre pour afficher un titre sans autres lignes dans le jTable ?

    Je tiens d'ors et déjà a vous remercie pour l'aide que vous me soumettrais.
    Cordialement.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Il n'y a pas de notion de titre dans une JTable. Il y a les entêtes de colonnes, c'est la seule chose qui pourrait s'approcher du titre.
    Si tu veux mettre un titre, ne pourrais-tu pas positionner un JLabel au dessus de la JTable ?

  3. #3
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Que intérêt alors d'avoir un composant comme le jTable si on doit résoudre par l'ajout de composants dans un jPanel?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Est-ce que tu parles d'en-têtes de colonnes, comme le souligne dinobogan, ou bien d'un titre sur l'ensemble de la JTable (indiquant par exemple : "table de multiplication") ?

  5. #5
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Et bien le titre d'une colonne.

    Comme dans cette exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Titre
    Réponse 1
    Réponse 2
    Réponse 3
    Réponse 4
    ...
    Réponse 30
    Enfin je ne sait pas si je suis clair?

  6. #6
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Tu devrai faire des recherches du coté des tablemodel (dans la javadoc et sur le forum) ca devrai peut etre t'eclairer un peu.
    Si tu veux donner un titre à ta JTable, en effet a premiere vue, il faut ajout un label au-dessus...
    Si c'est pour mettre des titres a tes colonnes, regarde du cote des tablemodel c'est pas bien difficile (j'y suis arrivé sans trop de souci)

  7. #7
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    J'ai essayer de comprendre ce lien http://java.sun.com/docs/books/tutor...nts/table.html . Mais sans succès.

    En fait j'ai pas besoin de créer de tableau dans le style de ce qui propose car j'aurais une boucle plus loin qui ne fera que s'occuper des lignes. Mais avant de faire ce lignes, il me faut un titre de colonne qui se crée au démarrage de l'application et qui ne change pas tout le reste du temps.

    Je ne sait pas si je me fait comprendre.

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    J'ai essayer de comprendre ce lien http://java.sun.com/docs/books/tutor...nts/table.html . Mais sans succès.
    Qu'est-ce que tu ne comprends pas ? Tu as forcément compris au moins une petite partie.
    Voici le principe général : tu utilises une classe qui dérive de AbstractTableModel. Tu surcharges les différentes méthodes pour gérer tes propres données. Ensuite, tu construis une JTable en lui fournissant une instance de ta classe.
    La JTable affiche des données en appelant les méthodes d'un AbstractTableModel. L'AbstractTableModel et ses descendant gère les données.

  9. #9
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    En fait il est difficile de dissocier une JTable d'un tableModel, etant donné que tu charge les entetes et les données partir du tablemodel, un exemple (issue de ce forum et assaisonné par moi:
    On part du principe que tes données sont déjà charger dans une list d'objet (soit a partir d'un BDD ou d'un fichier peut importe). Ici j'utilise une ArrayList.

    Objets de donnée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class ObjVehicule{
     private String identifiant=null;
     private String numPlaque=null;
     private int nbreRoue=-1;
     
     public ObjVehicule(String identifiant, String numPlaque, int nbreRoue){
      this.identifiant=identifiant;
      this.numPlaque=numPlaque;
      this.nbreRoue=nbreRoue;
     }
     //+ Getter & Setter...
    }
    Jusque la rien de difficile...

    Déclaration du tableModele
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    import java.util.ArrayList;
    import javax.swing.table.AbstractTableModel;
     
    public class ModelListeDeVehicule extends AbstractTableModel{
     private String[] columnHeader=new String[0];
     private Object[][] rows=new Object[0][0];
     
     @Override
     public boolean isCellEditable(int row, int col) {
      return false;
     }
     @Override
     public int getColumnCount() {
      return columnHeader.length;
     }
     @Override
     public int getRowCount() {
      return rows.length;
     }
     @Override
     public Object getValueAt(int ligne, int cellule) {
      return rows[ligne][cellule];
     }
    /**
     * Setter sur le Header
     * @param newHeader
     */
     public void setHeader(String[] newHeader){
      columnHeader=newHeader;
      super.fireTableStructureChanged();
     }
    /**
     * Getter sur les entetes de colonne
     */
     public String getColumnName(int column) {
      return this.columnHeader[column];
     }
    /**
     * Setter sur les donnees du model
     * @param newDonnee
     */
     public void setDonnee(ArrayList<ObjVehicule> newDonnee){
      Object[][] listAfficher= new Object[newDonnee.size()][3];
      ObjVehicule nouvVehicule=null;
       if(newDonnee!=null){
        for(int cpt=0;cpt<newDonnee.size();cpt++){
         nouvVehicule=(ObjVehicule)newDonnee.get(cpt);
         Object[] ligne=new Object[3];
         ligne[0]=nouvVehicule.getIdentifiant();
         ligne[1]=nouvVehicule.getNumPlaque();
         ligne[2]=new Integer(nouvVehicule.getNbreRoue());
         listAfficher[cpt]=ligne;				
        }
       }
       rows=listAfficher;
       super.fireTableDataChanged();
     }
    }
    Exemple d'utilisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    // dans ton ihm
    // Declaration du header
    String[] header=new String[3];
    header[0]="Identifiant";
    header[1]="Numero de plaque";
    header[2]="Nombre de roue";
    //Declaration du modele de la table
    ModelListeDeVehicule modelListeDeVehicule=null;
    //Declaration de la table des vehicules
    JTable jTableVehicule=null;
    //Declaration de la liste de vehicule
    ArrayList<ObjVehicule> listeDesVehicules=null;
    //code...
    //Chargement des données
    listeDesVehicules=ChargerDonnees();//a toi de voir comment tu fais :P
    //Declaration de la JTable
    public JTable getJTableVehicule{
     if(jTableVehicule==null){
      jTableVehicule=new JTable(this.getModelListeDeVehicule());
      //etc... ajout de listener, modification des certains parametres...
     }
     return jTableVehicule;
    }
    //Declaration du modele de la table vehicule
     public ModelListeDeVehicule getModelListeDeVehicule(){
      if(modelListeDeVehicule=null){
       modelListeDeVehicule=new ModelListeDeVehicule();
       modelListeDeVehicule.setHeader(header);
       modelListeDeVehicule.setDonnee(listesDesVehicules);
      }
      return modelListeDeVehicule;
     }
    Bon biensur faut aussi penser à mettre la JTable dans un JScrollPane pour avoir des scrollBar, etc...
    J'espere que ca t aide un peu

    L'avantage de passer par un TableModel c'est surtout que le rafraichissement de la table est facile, et si tu rend ton code un peu plus "generique" tu dois povoir utiliser le même pour toute tes tables.

Discussions similaires

  1. [À télécharger] Manipulation par le code d'une source de données ODBC
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 14/11/2010, 14h36
  2. Réponses: 2
    Dernier message: 15/09/2006, 12h07
  3. [C#/SQL Server 2005] Comment créer une base de donnée par le code ?
    Par FraktaL dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/09/2006, 17h27
  4. [VBA-E] Comment créer un bouton ds une wksheet par un code vba
    Par moicwill dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2006, 17h12
  5. [DBGRID] Comment derouler par le code une picklist ?
    Par kase74 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/09/2004, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo