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 : ajustement de la hauteur de ligne lors d'un redimensionnement


Sujet :

Composants Java

  1. #1
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut JTable : ajustement de la hauteur de ligne lors d'un redimensionnement
    Bonjour,

    J'ai un JTable dont je souhaite contrôler la hauteur des lignes. Plus précisément, je souhaite adapter automatiquement la hauteur des lignes (qui sont en nombre fixe) à la hauteur courante du composant. Et je ne sais pas trop comment faire : il n'y a apparemment pas d'équivalent du AUTO_RESIZE_ALL_COLUMNS pour les lignes (alors que c'est exactement ce que je voudrais). Tout ce que je trouve sur l'ajustement de la hauteur des lignes concerne l'adaptation au contenu de la cellule, mais ce n'est pas ce que je souhaite.

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 430
    Points : 29 095
    Points
    29 095
    Billets dans le blog
    2
    Par défaut
    Salut,

    Après avoir rempli la JTable, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (int row = 0; row < table.getRowCount(); row++)
            {
                int rowHeight = table.getRowHeight(); // on utilise la hauteur par défaut, comme minimum, 
     
                for (int column = 0; column < table.getColumnCount(); column++)
                {
                    Component comp = table.prepareRenderer(table.getCellRenderer(row, column), row, column);
                    rowHeight = Math.max(rowHeight, comp.getPreferredSize().height); // on cherche la hauteur du composant le plus grand
                }
     
                table.setRowHeight(row, rowHeight);
            }
    S'il y a des changements ultérieurs, qui pourraient modifier la hauteur des composants de rendu, il faudrait rappeler ce code à chaque fois
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    Après avoir rempli la JTable, tu peux faire :

    ...
    Merci de ta réponse, mais ce n'est pas ça que je souhaite faire. Comme je l'ai dit, je ne veux pas m'adapter au rendu des cellules, je veux m'adapter à la taille totale allouée en hauteur au tableau. Pour l'instant, je n'arrive pas à obtenir cette valeur (JTable.getHeight me renvoie 0, sans doute je l'utilise mal), et je ne sais pas comment détecter un changement de cette taille (pour rappeler une éventuelle méthode).

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 430
    Points : 29 095
    Points
    29 095
    Billets dans le blog
    2
    Par défaut
    Ah, ok, je comprends mieux : enregistres un ComponentListener/ComponentAdapter sur la JTable, et dans componentResized, tu pourras réagir aux changement de hauteur de la table. Il faudra bien sûr tenir compte de la hauteur des headers, et des lignes de la grille, et peut être d'insets dus à la bordure.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Ah, ok, je comprends mieux : enregistres un ComponentListener/ComponentAdapter sur la JTable, et dans componentResized, tu pourras réagir aux changement de hauteur de la table. Il faudra bien sûr tenir compte de la hauteur des headers, et des lignes de la grille, et peut être d'insets dus à la bordure.
    OK merci du conseil. J'ai besoin d'un peu de temps pour valider ou demander des précisions, avant de tagger résolu. Je reviens...

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Ah, ok, je comprends mieux : enregistres un ComponentListener/ComponentAdapter sur la JTable, et dans componentResized, tu pourras réagir aux changement de hauteur de la table. Il faudra bien sûr tenir compte de la hauteur des headers, et des lignes de la grille, et peut être d'insets dus à la bordure.
    C'est parfait pour moi, voilà pour info le code de mon ComponentAdapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class TableAdapter extends ComponentAdapter {
      public void componentResized(ComponentEvent e) {
        table.setRowHeight(table.getHeight()/table.getRowCount()); // table est un JTable accessible depuis cette classe
      }
    }
    [Résolu], merci !

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

Discussions similaires

  1. [XL-2013] Ajustement de la hauteur de ligne sur une zone sélectionnée
    Par vonfelt dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/02/2015, 18h04
  2. [XL-2007] Ajuster automatiquement la hauteur des lignes
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2013, 18h01
  3. Ajuster automatiquement la hauteur de ligne d'une cellule fusionné
    Par xvrpetit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2013, 09h29
  4. Réponses: 2
    Dernier message: 24/02/2010, 10h26
  5. [XL-2003] Hauteur de lignes ajustée à la hauteur de page
    Par CC25 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2009, 14h33

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