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 :

Comment bien utiliser un JTextPane


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut Comment bien utiliser un JTextPane
    Bonjour à tous,

    je travaille sur une ihm qui permet d'entrer du texte à partir de zone définies par le biais de polygone. Mon ecran est séparé en deux, je trace mes polygones a gauche et j'ai des JTextPane de la meme taille qui apparaissent sur la droite.

    Je souhaite implémenter un comportement particulier pour ceux-ci :
    * lorsque l'utilisateur tape du texte, celui-ci doit tenir sur une ligne, si on arrive au bout du JTextPane, on réduit la taille de la font, mais on ne revient pas à la ligne.
    * Si on enlève du texte, la taille de la font augmente pour remplir l'espace
    * Si l'utilisateur tape sur entrée, on va à la ligne
    * L'utilisateur peut mettre le Texte en forme

    Après quelques recherches, j'ai lu que je devais créer mon propre modèle de document qui étend PlainDocument, avec une définition de style particulier,

    Par contre, je ne comprends pas bien comment utiliser ces objets, c'est pourquoi je suis à la recherche d'exemples d'utilisation des classes StyledDocument, PlainDocument et JTextPane, merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Est-ce que l'exemple de la Comment avoir un éditeur de texte avec plusieurs styles de mise en page ? te permet d'avancer, même s'il ne répond pas à toutes tes questions ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    bon j'ai pas mal avancé la dessus, je met en forme et fait tout un tas de trucs chouettes avec mes JTextPane

    Par contre, j'ai une question sur l'utilisation de FontMetrics, je cherche à calculer la taille idéale de ma font en fonction de la hauteur du JTextPane et du nombre de lignes sélectionnées par l'utilisateur.

    Jusque la tout va bien, j'ai une méthode qui calcule la hauteur en pixel, divise ca par le nombre de lignes, logiquement j'ai donc la taille max en pixel qui doit etre occupée par la police

    C'est ici que FontMetrics intervient, si j'ai bien compris cette méthode permet de calculer les tailles en pixels, particulierement à l'aide de getHeight ?

    Je l'utilise donc mais le résultat retourné est étrange : 16 dans mon cas, pour un getSize qui me donne 12p, une font de 12 prendrait donc 16 pixels a l'ecran ? ca me parait improbable ^^

    Merci donc de me dire ce que je n'ai pas compris, ci joint la méthode pour voir :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    	/**
             * Définit la hauteur par défaut des caractères du JTextPane d'un bloc actif
             * en fonction du nombre de lignes choisi par l'utilisateur ainsi que de la taille
             * de l'intervalle entre ces lignes
             */
    	private void setHauteurCaracteresJTextPane(){
    		if(blocActif != null){
    			JTextPane testJTextPane = blocActif.getTexte();
    			Dimension dimensionBloc = testJTextPane.getBounds().getSize();
     
    			int nombreLignes = blocActif.getNombreLignes();
     
    			FontMetrics test = getFontMetrics(getGraphics().getFont());
     
    			int hauteurDuneLigne = (int)dimensionBloc.getHeight();
    			if(nombreLignes != -1){
    				hauteurDuneLigne = (int)(dimensionBloc.getHeight() / nombreLignes);
    			}
    			if(logger.isDebugEnabled()){
    				logger.debug("ON CALCULE LA TAILLE IDEALE POUR LA HAUTEUR DE LA FONT !!!");
    				logger.debug("HAUTEUR D'UNE LIGNE : "+hauteurDuneLigne);
    				logger.debug("HAUTEUR FONT TOTALE (px ?) : "+test.getHeight());
    				logger.debug("HAUTEUR FONT (pp ?) : "+getGraphics().getFont().getSize());
    			}
     
     
    		}
    	}

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    La question du dessus est toujours valable

    Autre question, je trace des formes avec un outil de dessin, cela me donne un polygone dans une fenetre.
    Dans un autre fenetre je trace un JTextPane, sensé représenté le rendu textuel du contenu du Polygone. Si je ne me suis pas trompé, on ne peut avoir des JTextPane que de forme rectangulaire, je fais donc un getBound du polygone.

    J'ai donc le rectangle qui contient ma forme, dans lequel je peux saisir du texte.
    Je sais le texte dans une autre fenetre, une fois celui ci saisit, je remplis le JTextPane rectangulaire avec mon texte.

    Mais idéalement, je souhaiterai qu'il suive autant que possible la forme du polygone. Si on prend ce dessin :


    Est il possible de positionner mon texte de manière précise, c'est à dire d'adopter une mise en forme permettant à mon texte "d'épouser" le polygone ?

Discussions similaires

  1. Comment bien utiliser ce forum ?
    Par Community Management dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 28/01/2007, 17h13
  2. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  3. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37

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