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

2D Java Discussion :

Dessin de string sur Graphics


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut Dessin de string sur Graphics
    Bonsoir, alors mon problème est tres simple

    j'ai deja une solution mais j'aimerais juste savoir si on peut l'améliorer avec java 1.5 (oui je suis limité a cette version pour le moment)

    imaginons un rectangle représentant une cellule d'affichage

    cette cellule a des coordonnées x y, une largeur et une hauteur, et pourquoi pas un texte...

    comment faire pour afficher ce texte au centre de la cellule, et si l'est plus grand que la largeur, alors reduire le texte, comme le font les JLabel, avec par exemple :

    text original : "un texte trop long"
    qui deviendrait : "un texte tr..."

    voila, moi perso j'ai deja une méthode qui en fonction de la font et des coordonnées test jusqu'a trouvé le texte qui tient dans la case...si aucun texte ne tient, cette méthode va jusqu'a diminuer la taille de la font et rééssaye, mais c'est bcp de calcul et je ne maitrise pas forcément les graphics et autre affine transform

    a oui autre précision, mon objet cellule n'herite de rien, il a juste une méthode paint(Graphics g) qui elle sera appelé dans un component par exemple

    voila merci d'avance tchou

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Les methodes qui font ce genre de choses ne sont pas secretes.
    Tu peux par exemple fouiller dans le code source de swing.

  3. #3
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par Sanguko Voir le message
    Les methodes qui font ce genre de choses ne sont pas secretes.
    Tu peux par exemple fouiller dans le code source de swing.
    si justement, qq1 avait fouillé pour moi et avait juste les bonnes propriétés a affecter, bah...ca m'arrangerait, d'ou ma requete

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Méthode de base : tu peux récupérer la boite englobante (un Rectangle2D) du texte avec la methode getStringBounds(String label, FontRendererContext context) de la classe Font (il faut lui passer le FontRenderContext du graphics) Ca permet d'effectuer le centrage horizontalement.

    Ensuite, le LineMetrics disponible avec la methode getLineMetrics(String label, FontRendererContext context) de la classe Font et grace à la methode getAscent() de la classe LineMetrics tu sauras où se trouve la baseline et ainsi faire le centrage verticalement.

    Si le texte est trop long tu le tronques jusqu'à ce qu'il rentre. Il existe peut-être (probablement même) des règles et outils pour faire ce genre de choses. N'hésite pas à regarder les sources du JLabel et de ses UI.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    La méthode SwingUtilities.layoutCompoundLabel() devrait être utile.

  6. #6
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par herve91 Voir le message
    La méthode SwingUtilities.layoutCompoundLabel() devrait être utile.
    je vais etre relou, mais j'ai regardé qq exemples sur le net de cette méthode, j'ai pas trop vu comment m'en servir

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/03/2006, 17h12
  2. Dessiner un rectangle sur une forme
    Par Neo41 dans le forum MFC
    Réponses: 6
    Dernier message: 13/08/2005, 01h08
  3. Dessin à la volée sur composant transparent
    Par orelero dans le forum 2D
    Réponses: 1
    Dernier message: 28/07/2005, 17h12
  4. Réponses: 3
    Dernier message: 29/06/2005, 14h29
  5. Query-string sur l'objet history
    Par AlLutun dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/11/2004, 09h20

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