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

AWT/Swing Java Discussion :

Layout personnalisé à améliorer


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Par défaut Layout personnalisé à améliorer
    Salut,

    Dans le cadre d'une application chat j'ai une classe qui étend JTextPane chargée de construire les messages à afficher sur le salon. Le container pour ces messages est un JScrollPane dans lequel se trouve un JPanel.
    Afin d'afficher les messages les uns en dessous des autres, j'ai trouvé un layout personnalisé: VerticalLayout (dont les sources peuvent être récuperées ici) qui permet d'afficher les composants comme je le désire et qui gère la position: Gauche, droite, haut, bas, etc...
    En revanche il ne semble pas gérer la largeur du composant.

    Le problème:

    Ce que je voudrais c'est que mon composant message s'étende sur la largeur si sa largeur est inférieure à celle du JScrollPane, et qu'il s'étende sur la hauteur (retour à la ligne) dans le cas contraire.
    En fait j'aimerais reconstruire le comportement du line wrapping d'un TextArea "tout bêtement".

    Screen du problème:



  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Le wrapping dans le JTextPane n'a rien a voir avec le layout.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Par défaut
    C'est pas un JTextPane c'est un JPanel. Le JTextPane c'est le composant sur fond bleu.

  4. #4
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Pourquoi tu ne mets pas directement le JTextPane dans le JScrollPane ? Tu peux quand meme faire des alignements gauche/droite avec, changer la couleur de fond du texte quand tu veux, inserer des images, etc. Ce sera en outre beaucoup moins lourd en memoire que de creer des dizaines de composants pour la discussion.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Par défaut
    C'est vrai c'est bien plus simple, mais l'élément "message" est en fait cliquable et contient un certain nombre de données. Sur les captures, le background apparait au passage de la souris. Plus tard je vais même y ajouter un JToolTip qui affichera certaines informations sur le message. En terme de mémoire j'imagine que ça doit être plus lourd en effet, mais je ne vois pas comment procéder autrement. Je pensais limiter le "buffer" de l'affichage à un nombre limité de messages... As-tu une meilleure idée ?

  6. #6
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Perso j'aurai opté pour un composant du style JList, elle t'aurais permit de faire à peu près la même chose en stockant tes objets de type message. Tu n'aurais alors pas eu à te préoccuper de la taille des JPanel...
    Mais bon, peut-être me fourvoye-je ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Par défaut
    J'ai fini par trouver une réponse. J'ai modifié la méthode layoutContainer du VerticalLayout pour modifier la taille du JPanel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void layoutContainer(Container parent) {
    	(...)
     
    	Component viewport = parent.getParent();
    	parent.setSize(viewport.getSize());
     
    	(...)
    }
    Ce n'est pas très propre comme méthode, c'est le moins que l'on puisse dire, étant donné que l'élément parent peut ne pas être un JScrollPane et donc ne pas avoir de JViewport. Mais c'est, pour l'instant, la seule que j'ai trouvée et qui peut convenir si elle est utilisée dans cet unique cas. Si vous avez une meilleure solution, je suis preneur.

    Merci à tous pour vos réponses en tout cas, Gfx: pour le problème de la mémoire je pense modifier le composant pour l'aléger un peu. Un Canvas me parait pas mal, car il est vrai que le composant actuel étendant un JTextPane il faut à chaque fois refaire un addStylesToDocument ce qui est assez lourd je suppose.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Par défaut
    Petit problème: les composants ne se redessinent pas lors du rétrécissement de la fenêtre :/

    EDIT: Rien à voir en fait...

Discussions similaires

  1. panel, layout et frame
    Par beLz dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 24/04/2004, 23h45
  2. [CR]Help numero page personnalisé
    Par juelo dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 09/01/2004, 16h59
  3. Réponses: 9
    Dernier message: 14/10/2003, 15h35
  4. [Débutant][swt][layout]
    Par Stessy dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 28/07/2003, 18h21

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