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 :

Largeur des colonnes de JTable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Largeur des colonnes de JTable
    Salut tout le monde; j'ai un petit problème avec mon JTable, je veux changer la largeur de ses colonne quand c'est necessaire mais je ne parviens pas à le faire. j'utilise la classe AbstractTableModel pour définir un model. Y a t'il qlq qui saura m'aider?

    aussi je veux changer la hauteur des ligne, pour ça j'ai pu le faire mais malheureusement la hauteur de toutes les ligne changent alors que moi je ne veux changer que qlq une. J'ai essayer avec la méthode setRowHeight(arg0, arg1) mais ça ne donne rien.

    Merci d'avance pour votre aide!

  2. #2
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    malheuresement le changement de hauteur de ligne s'applique à la totalité de la table.

    pour modifier la largeur des colonnes du jtable tu récupères le model de colonnes du header et tu fixes leurs tailles

    un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    					TableColumn column=jt.getTableHeader().getColumnModel().getColumn(i);
    					if (sql.fields.get(i).t_libType!=Ctf.t_INVISIBLE){
    						column.setMinWidth(((sql.fields.get(i).t_libLength+2)*(Gp.WIDTHCHAR+0))+2);
    						column.setMaxWidth(((sql.fields.get(i).t_libLength+2)*(Gp.WIDTHCHAR+0))+2);
    					} else {	
    						column.setMinWidth(0);
    						column.setMaxWidth(0);
    					}

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Merci william44290 pour votre réponse , je vias le tester, merci encore

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Si si, tu peux spécifier directement la hauteur du composant dans le renderer (habituellement une JLabel).

    (via
    table.setRowHeight(row, row_height); dans le code du renderer)

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Désolée william44290, mais ça ne marche toujours pas. et pour vous répondre
    Hypercube, je ne peux pas spécifier la hauteurs des lignes à l'avence car je veux les ajuster au contenu que je peux pas le savoir.

    Merci pour vos réponses

  6. #6
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    peut-tu nous poster ton code, car cela devrait fonctionner.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    C'est justement avec la méthode table.setRowHeight(row, row_height) de JTable que tu peux spécifier la hauteur des lignes, si tu place un appel à cette méthode dans le code du renderer, tu peux gérer des lignes de hauteurs différentes, et pour obtenir la hauteur qui convient à ta ligne, initialise ton composant de rendu (habituellement JLabel sauf si tu as codé un custom component) et fait un getPreferredSize().height pour obtenir la taille qui convient, ensuite via table.setRowHeight(row, row_height) tu spécifie la hauteur de la ligne.
    (en gros, utilise la preferred size du composant de rendu initialisé pour donner une hauteur de ligne à la table).

    Tu vas sûrement être confronter au problème de: je redonne la taille de la row à chaque fois => il faut gérer toutes les cellules de la ligne => la hauteur d'une ligne doit être la hauteur de la cellule la plus grande sur cette ligne.

    if (table.getRowHeight(row) < c.getPreferredSize().height) {
    table.setRowHeight(row, c.getPreferredSize().height);
    }

  8. #8
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Attention lorsque tu fixes la taille des colonnes tu dois préciser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jt.getTableHeader().setResizingAllowed(false);

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    ou table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF), je ne sais pas pourquoi mais j'ai toujours trouvé bizarre de passer par les table headers...

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Salut Hypercube, j'ai déja essayé avec table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF), mais ça ne marchais pas. Je viens d'assayer la solution william44290 et ça a marché, j'ai pu changer la largeur d'une colonne, mais j'ai un autre problème que la scroll horizontale n'apparait pas et de ce fait il y a des colonne qu'on peut pas les voir???

    merci tout le monde pour votre aide !!

  11. #11
    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
    mais j'ai un autre problème que la scroll horizontale n'apparait pas et de ce fait il y a des colonne qu'on peut pas les voir???
    La table doit être dans un scrollPane, plus précisément dans le viewPort du scrollPane;
    tu donnes à la table la largeur désirée, mais au viewPort une largeur moindre, telle que rien ne sorte de l'écran;
    comme la table dépasse du viewPort, l'ascenseur horizontal apparaît :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     Dimension dimTable = new Dimension();
     dimTable.setSize(largeurTotale,jScrollPane1.getViewport().getHeight());                
     
     Dimension dimViewport = new Dimension();
     dimVewport.setSize(largeurMoindre,jScrollPane1.getViewport().getHeight());       
     
      XTable1.setPreferredSize(dimTable);                                                      
      jScrollPane1.getViewport().setPreferredSize(dimViewport);                    
      jScrollPane1.revalidate();
      jPanel1.revalidate();                           // si le scrollPane est dans un panel
    ...devrait marcher.
    bonne chance !

Discussions similaires

  1. Largeur des Colonnes d'une JTable
    Par Dine_Med dans le forum Composants
    Réponses: 3
    Dernier message: 23/04/2009, 23h01
  2. JTable. largeur des colonnes apres MAJ de la table
    Par step31 dans le forum Composants
    Réponses: 4
    Dernier message: 17/09/2008, 18h57
  3. [JTable] Largeur des colonnes
    Par opensource dans le forum Composants
    Réponses: 2
    Dernier message: 08/02/2008, 10h39
  4. Comment fixer les largeurs des colonnes d'un TStrinGrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/08/2005, 13h24
  5. Fixer la largeur des colonnes d'une CListCtrl
    Par Depteam1 dans le forum MFC
    Réponses: 4
    Dernier message: 28/06/2005, 15h46

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