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 :

Comment ajuster la taille des cellules de l'entête d'un JTable à son contenue


Sujet :

Composants Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut Comment ajuster la taille des cellules de l'entête d'un JTable à son contenue
    Bonjour,

    Je voudrais savoir s'il ya un moyen d'ajuster la taille des cellules de l'entête d'un JTable à son contenue, ou modifier tout court la taille de l'entête de sorte qu'on peut afficher tout le texte dans chaque cellule.

    Merci infiniment.
    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
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
     
     
    public class Fenetre extends JFrame {
     
    	public Fenetre(){
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setTitle("JTable");
    		this.setSize(300, 120);
     
                    //Les données du tableau
    		Object[][] data = {	{"1.1", "1.2", "1.3"},
    				{"2.1", "2.2", "2.3"},
    				{"3.1", "3.2", "3.3"},
    				{"4.1", "4.2", "4.3"}
    		};
    	        //Les titres des colonnes
    		String  title[] = {"Entete de la premiere colonne numero", "Entete de la premiere colonne numero", "Entete de la premiere colonne numero"};
    		JTable tableau = new JTable(data, title);
                    //On ajoute notre tableau à notre contentPane dans un scroll
                    //Sinon les titres des colonnes ne s'afficheront pas ! !	
    		this.getContentPane().add(new JScrollPane(tableau));
    	}
     
     
    	public static void main(String[] args){
    		Fenetre fen = new Fenetre();
    		fen.setVisible(true);
    	}
     
    }

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    J'ai trouvé une solution pour augmenter la hauteur de l'entête d'un JTable, mais je n'ai rien trouvé pour le problème d'ajustement de la taille d'une cellule de l'entête aux texte qu'elle contienne
    Il faut juste ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            tableau.getTableHeader().setPreferredSize(new Dimension(tableau.getTableHeader().getWidth(), 105));
    y a t'il un moyen d'insérer "entrée" dans le texte? Je veux une solution

  3. #3
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Salut !

    A voir si ça peut t'aider : une méthode qui ajuste la largeur des colonnes, y compris les entêtes, à la largeur du contenu...

    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
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            int col = 0, droiteMax = 0, larg = 0, largTotal = 0,
                                        row = 0, tableX = 0, width = 0;
            JTableHeader header = jXTable1.getTableHeader();
            Enumeration columns = jXTable1.getColumnModel().getColumns();
     
            jXTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            while(columns.hasMoreElements()){                            // longueur maximum du texte ou du titre d'une colonne
                TableColumn column = (TableColumn)columns.nextElement();
                col = header.getColumnModel().getColumnIndex(column.getIdentifier());
                width = (int)jXTable1.getTableHeader().getDefaultRenderer()
                        .getTableCellRendererComponent(jXTable1, column.getIdentifier()
                                , false, false, -1, col).getPreferredSize().getWidth();
                for(row = 0; row<jXTable1.getRowCount(); row++){
                    int preferedWidth =
                            (int)jXTable1.getCellRenderer(row, col).getTableCellRendererComponent(jXTable1,
                            jXTable1.getValueAt(row, col), false, false, row, col).getPreferredSize().getWidth();
                    width = Math.max(width, preferedWidth);
                }
                header.setResizingColumn(column);                       // this line is very important
                larg = width+jXTable1.getIntercellSpacing().width;
             //   larg = (larg*13)/10;                            // largeur de la colonne plus un peu pour desserrer
                larg = larg+20;           // mais c'est mieux un ajout fixe, pas en %, 
                                             // par ex. un blanc devant et derrière chaque donnée avant de l'écrire
                largTotal += larg;                                  // largeur totale de la table si utile 
                column.setWidth(larg);
            } 
    }

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup. c'est ce que je voulais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Ajustement taille des cellules
    Par ca_adrien dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/09/2013, 15h58
  2. [MVC] Ajuster la taille des cellules
    Par Agoudard dans le forum Qt
    Réponses: 0
    Dernier message: 03/07/2011, 18h17
  3. [CSS 2] Ajustement de la taille des cellules d'un tableau HTML
    Par malikoo dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 11/04/2011, 12h46
  4. Réponses: 2
    Dernier message: 20/02/2006, 16h06

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