En-tête des JTable

Bertouf Messages postés 1 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 28 février 2011 - 28 févr. 2011 à 15:31
 Utilisateur anonyme - 2 mars 2011 à 02:58
Salut à tous,
Voila j'ai un soucis que je n'arrive pas à résoudre. J'ai un JTable qui fonctionne très bien avec un modèle assez commun à savoir que chaque colonne a sa propre en-tête.
Exemple :
Nom Prénom Age
Dupont Alain 28
Dupond Georges 85

Pour des questions de places sur mon IHM j'aimerais inverser lignes et colonnes de manières à ce que chaque ligne ait son en-tête (pour gagner de la place en largeur).
Exemple:
Nom Dupont Dupont
Prénom Alain Georges
Age 28 85

Je n'ai pas trouvé le moyen de réaliser cela et les astuces sont les bien venues !!!!!
Merci d'avance

2 réponses

Utilisateur anonyme
2 mars 2011 à 02:18
Salut,

Voci ce que tu peux faire (même si ce n'est pas jojo):

Les titres lignes ne sont pas de véritables titres

   //import javax.swing.*;
// ou bien avec détails:
   import javax.swing.JFrame;
   import javax.swing.JTable;
   import javax.swing.JScrollPane;
   import javax.swing.SwingUtilities;
   
   //import java.awt.*;
// ou bien avec détails:
   import java.awt.HeadlessException;
   import java.awt.Dimension;
   import java.awt.BorderLayout; 

   public class CreerTable2 extends JFrame // avec titres colonnes
   { 
   
      public CreerTable2() throws HeadlessException
      { 
         initializeUI();
      } 
   
      private void initializeUI()
      {
      // Definitions titres des colonnes. 
         String[] titreColonnes =
            {"", "", "", "", "", ""}; // il faut autant de "" que de Noms +1
               
      // Definition table lignes de données.
         Object[][] lignesDonnees = {
         {"Noms", "Dupont", "Dupont", "Machin", "Truc", "Dupond"},
         {"Prénoms", "Alain", "Georges", "Maurice", "Paul", "Jacques"}, 
         {"Ages", "28", "85", "32", "22", "45"},
         };    
      
      // 
      // Initialisation et instance de la JTable en specifiant les noms 
      // des lignes de données et de colonnes.
      // Puis le tout est placé dans un  scroll pane. 
      // 
         JTable table = new JTable(lignesDonnees, titreColonnes);
               
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // pour avoir le scroll horizontal      
         JScrollPane pane = new JScrollPane(table);
      
      // Setting frame
         setTitle("Table 2"); 
      
         setSize(new Dimension(300, 102)); // pour 3 lignes
      
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      
         setLayout(new BorderLayout()); 
      
         getContentPane().add(pane, BorderLayout.CENTER); 
      }
   
      public static void main(String[] args)
      { 
         SwingUtilities.invokeLater(
               new Runnable()
               { 
                  public void run()
                  { 
                     new CreerTable2().setVisible(true); 
                  }
               });
      }
   }


Cordialement,

...\ Dan /...
0
Utilisateur anonyme
2 mars 2011 à 02:58
Re,

Mais la présentation classique avec les titres des colonnes n'occupe pas plus de place tout simplement en choisissant correctement les dimensions setSize(new Dimension(300, 98)); // pour 3 lignes (par exemple)
de la JFrame:

   //import javax.swing.*;
// ou bien avec détails:
   import javax.swing.JFrame;
   import javax.swing.JTable;
   import javax.swing.JScrollPane;
   import javax.swing.SwingUtilities;
   
   //import java.awt.*;
// ou bien avec détails:
   import java.awt.HeadlessException;
   import java.awt.Dimension;
   import java.awt.BorderLayout; 

   public class CreerTable1 extends JFrame // avec titres colonnes
   { 
   
      public CreerTable1() throws HeadlessException
      { 
         initializeUI();
      } 
   
      private void initializeUI()
      {
      // Definitions titres des colonnes. 
         String[] titreColonnes =
            {"Nom", "Prénom", "Âge"};
      
      // Definition table lignes de données.
         Object[][] lignesDonnees = { 
               {"Dupont", "Alain", "28"},
               {"Dupont", "Georges", "85"},
               {"Machin", "Maurice", "32"},
               {"Truc", "Paul", "22"},
               {"Dupond", "Jacques", "45"},
               };
      
      // 
      // Initialisation et instance de la JTable en specifiant les noms 
      // des lignes de données et de colonnes.
      // Puis le tout est placé dans un  scroll pane. 
      // 
         JTable table = new JTable(lignesDonnees, titreColonnes);
      
         JScrollPane pane = new JScrollPane(table); 
      
      
      // Setting frame
         setTitle("Table 1"); 
      
         setSize(new Dimension(300, 98)); // pour 3 lignes
      
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      
         setLayout(new BorderLayout()); 
      
         getContentPane().add(pane, BorderLayout.CENTER); 
      }
   
      public static void main(String[] args)
      { 
         SwingUtilities.invokeLater(
               new Runnable()
               { 
                  public void run()
                  { 
                     new CreerTable1().setVisible(true); 
                  }
               });
      }
   }



Et c'est à mon avis plus clair...


...\ Dan /...
0
Rejoignez-nous