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 :

Composant qui se redimensionne en fonction d'un texte


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Eco
    Eco est déconnecté
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Par défaut Composant qui se redimensionne en fonction d'un texte
    Bonjour,

    Je cherche a faire quelquechose qui a l'air tout simple (et je suis sur que je ne suis pas le 1er a vouloir faire ca) mais je n'arrive pas a trouver une solution satisfaisante.

    Mon probleme:
    Je voudrais a afficher un texte dans un composant Swing, ce composant aurait un largeur fixe mais une hauteur variable. La hauteur du composant serait automatiquement adaptee en fonction du nombre de lignes.

    Mes solutions:
    1. J'ai tout d'abord essaye avec un JTextArea et des listeners sur la scrollbar verticale. Mais je me suis vite apercu que ce n'était pas une solution viable (si il y a bcp de texte et que l'incremente ma hauteur par 1px ca risque d'etre long )

    2. J'ai finalement mis en place cette 2eme solution:
    Je fais une moyenne de characters par ligne (disont 20). Je decoupe mon texte en entree par paquet de 20 et du coup je sais combien j'ai de ligne. Disons que ca marchouille mais si je change ma fonte, ben mon nombre de characters par ligne est a recalculer.

    Quelqu'un aurait une solution un peu plus élégante (et optimisée)?

    Merci de votre aide.

    Eco.

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par Eco Voir le message
    mais si je change ma fonte, ben mon nombre de characters par ligne est a recalculer.
    la classe FontMetric devrais faire l'affaire

  3. #3
    Eco
    Eco est déconnecté
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Par défaut
    Effectivement ca fonctionne parfaitement

    Merci beaucoup.

    Eco.

  4. #4
    Eco
    Eco est déconnecté
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Par défaut
    Bonjour,

    Desole de remonter mon vieux post resolu mais je viens de trouver une maniere beaucoup plus simple et elegante. Ce bout de code fixe la hauteur d'un JTextPane pour la largeur donnee:

    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
     
      public static void setHeight(JTextPane componant, int width){
        if (width<1 || componant==null)
          return;
     
        try {	    
          componant.setSize( new Dimension( width, Integer.MAX_VALUE ) );
          Rectangle r = componant.modelToView( componant.getDocument().getLength() );
          int h = r.y + r.height;
          componant.setSize( new Dimension( width, , r.y + r.height ) );            
        }
        catch(Exception e) {
    	//log error
        }
      }
    Cela fonctionne avec toutes les fonts et toutes les tailles.
    En esperant que ca peut aider quelqu'un

    Eco.

  5. #5
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    merci pour le partage .

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Si ce code est pour avoir un fonctionnement similaire au wrapLine des TextArea lorsqu'il est désactivé, tu peux redéfinir la fonction suivante dans ton JTextPane :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public boolean getScrollableTracksViewportWidth()
    {return false;}
    Fred.

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

Discussions similaires

  1. [Qt Designer] Composant qui s'agrandit en fonction de la fenêtre
    Par france38 dans le forum Outils
    Réponses: 4
    Dernier message: 12/04/2011, 11h59
  2. Réponses: 6
    Dernier message: 02/04/2007, 01h06
  3. Réponses: 3
    Dernier message: 06/02/2007, 14h46
  4. Réponses: 5
    Dernier message: 01/11/2006, 16h04
  5. [ContrôleBD] DBCtrlGrid qui se redimensionne tout seul !
    Par LadyWasky dans le forum Composants VCL
    Réponses: 8
    Dernier message: 01/07/2004, 23h08

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