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][TableCellRenderer] dimensionnement automatique de la hauteur des cellules


Sujet :

Composants Java

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut [JTable][TableCellRenderer] dimensionnement automatique de la hauteur des cellules
    Bonjour,

    Je voudrais savoir :
    Comment savoir s'il y a eu des retours chariot dans un JTextArea ?

    Je me pose cette question car j'enregistre le contenu d'un JTextArea dans une DB en tant que String. Et lorsque je réaffiche dans un JTextArea tout va bien (les retours chariot sont conservés). Mais quand je mets le contenu dans un JTable cela reste en ligne. Je tiens à préciser que j'ai changé mon TableCellRenderer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class JTextTableCellRenderer extends JTextArea implements TableCellRenderer
        {
            public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column)
            {
                setText((String)value);
                return this;
            }
        }
    merci

  2. #2
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    Je pense que ce sont tout simplement les retours chariot de la jtable qui ne sont pas encode de la meme facon.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut
    Merci de ta réponse,
    mais ça me dit pas comment faire ni dans quelle direction chercher... Et surtout dans ma JTable je lui est indiqué comment traiter les objets String : en les mettant dans un JTextArea. C'est de là que viennent mes interrogations.

  4. #4
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    Tiens ce lien va certainement t'aider. Ca te donne un exemple pour les sauts de lignes dans les jtables si c'est ce que tu veux faire.
    http://www.crionics.com/products/ope...Examples2.html

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut [JTextArea][Jtable] saut de ligne
    Merci le site est très interressant, mais ne répond pas vraiment à ma question.
    Pour résumer mon problème :
    J'enregistre dans une DB des String provenant d'un JTextArea.
    -Si je fais un appel sur ma DB et que j'affiche dans un JTextArea les retours chariots sont conservés.
    -Si je fais un appel sur ma DB et que j'affiche dans un JTable (presonalisé) les retours chariots ne sont pas conservés.
    Et je ne comprends pourquoi. Une de mes idée étais de detecter les retours chariots pour forcer la representation de la table (les balises html sont bien acceptées).
    J'espère avoir été assez claire dans la définition de mon problème.
    Merci tous.

    PS: je modifie le l'intitulé pour qu'il soit plus parlant.

  6. #6
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    Eh bien je crois que tu n'a pas le choix. Les JTable ne saute de ligne qu'en passant par les balises html. Tu es donc oblige de passer par le remplacement de tes retours chariots habituelle en <br>. C'est plus long mais c'est la jtable qui veux ca.

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut
    Ok, je suis entièrement d'accord avec toi.
    Mais pour faire correctement le découpage avec les <br> il me faut savoir lorsqu'il y a eu un retour chariot. D'où ma première question :

    Comment savoir s'il y a eu des retours chariots dans un JTextArea ?

    Merci

  8. #8
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    En general les retour chariot sont encoder soit par "\n" ou par "\r\n" (il faut essaye car je ne sais pas lequel est valable pour le jtextarea mais le '\n' est plus courant).
    Il te suffira donc de juste utiliser la methode replaceAll de la classe string pour remplacer ce caractere par des '<br>'. Comme ca si il y a des retours chariots ca va te les remplacer sinon rien ne se passera.

  9. #9
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut
    Salut,
    J’ai ajouté à mes String <html> au début et <br></html> à la fin.
    Ceci a pour résultat d'avoir à l'intérieur des cellules le texte sur plusieurs lignes et de façon dynamique (si l'on modifie avec la souris la taille de la cellule ça s'adapte) plutôt content!!!
    Néanmoins, la taille des cellules, dans le sens verticale, ne change pas et ne s'adapte pas et je ne sais pas du tout comment mis prendre.
    Voilà ça avance mais de difficultés en difficultés....

    merci pour ton aide

  10. #10
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut
    Re-Bonjour,

    J'ai essayé plusieurs choix sans succés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class JTextTableCellRenderer extends JTextArea implements TableCellRenderer
        {
            public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column)
            {
               setText((String)value);
               int i = getRows();
               table.setRowHeight(row, i*16);
     
               return this;
            }
        }
    c'est de ma production perso => très rudimentaire
    et l'autre code est inspiré très fortement d'un anciens post
    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
    class JTextTableCellRenderer extends JTextArea implements TableCellRenderer
        {
            public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column)
            {
               setText((String)value);
     
               // Spécifie la hauteur de la ligne
               int preferredHeight = this.getPreferredSize().height;
               if (table.getRowHeight(row) != preferredHeight) 
               {
                    table.setRowHeight(row, preferredHeight);
               }
     
               return this;
            }
        }
    De plus, ma table ne ragit pas à ce que je mets dans mon TableCellRenderer car même quand je mets table.setRowHeight(60) rien ne se passe?!???!
    Là je commence sérieusement à secher

  11. #11
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    Sur ce sujet je ne pourrais pas vraiment t'aider mais je te conseil de poster une nouvelle discussion dans la rubrique GUI->AWT/SWING. Ca correspond plus a ce que tu souhaites faire.

  12. #12
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    J'ai déplacé le message...

  13. #13
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut
    ok, merci

  14. #14
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    Par contre l'intitule aussi risque de faire defaut !!

  15. #15
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 143
    Points
    143
    Par défaut
    Bonsoir,

    J'ai fais une avancé : c'est moi le problème!!!
    Eh oui, dans le setDefaultRenderer je n'avais pas spécifié la bonne class...
    Toutefois, si quelqu'un c'est comment dimensionner dinamiquement la hauteur des cellule ça m'interesse. Car avec la solution decrite plus haut le text devient figué.

    Merci d'avance.

Discussions similaires

  1. Tabulate et hauteur des cellules
    Par Rose1366 dans le forum ODS et reporting
    Réponses: 0
    Dernier message: 23/09/2011, 17h30
  2. Réponses: 2
    Dernier message: 24/02/2010, 09h26
  3. Définir la hauteur des cellules JTable
    Par cotede2 dans le forum Composants
    Réponses: 1
    Dernier message: 07/11/2009, 02h25
  4. Redimensionner la hauteur des cellules d'un gridview
    Par lazins dans le forum ASP.NET
    Réponses: 0
    Dernier message: 04/12/2008, 16h20
  5. [VBA-Excel] modification automatique de la couleur des cellules
    Par ricachu dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/06/2008, 15h30

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