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 :

Customisation de Borders de JLabel


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Par défaut Customisation de Borders de JLabel
    Bonjour,


    je souhaiterais arrondir les coins des borders de mes JLabel, assez nettement..
    J'ai essayé de créer des LineBorder avec la variable booléene roundedCorners initialisée à "true" mais le résultat n'est pas très visible et donc convaincant..
    Pareil pour donner un effet d'ombre...

    N'y a-t-il pas un moyen d'botenir de jolis coins arrondis (question d'ergonomie) et
    un joli effet d'ombres à mes JLabel ?

    Merci pr votre aide .

    Motorenshi

  2. #2
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    The AbstractBorder class can be a good starting point for creating customized borders for Swing components.
    Cette citation fait référence a cet article :

    http://java.sun.com/products/jfc/tsc...ers/index.html

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    Pour les bordes je pense qu'il va falloir faire une classe a partir d'un AbstractBorder .

    mais pour l'ombre, tu as cette possibilité dans la librairie de SwingLabs
    http://swinglabs.org/index.jsp

    Demo :
    http://download.java.net/javadesktop...gx/swingx.jnlp

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Par défaut
    Merci !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Par défaut
    Boh, j'arrive bien à customisé les borders de mes JLabels en extendant la classe AbstractBorder, mais j'ai tjs un problème : la zone de sélection lorsque je clique sur un de mes JLabel et la background couleur qui leur est associé dépasse les limites du nouveau Border... (on dirait que le JLabel garde son border par défaut)

    Comment se fait-il que le nouveau border associé ne soit pas considéré comme tel? comment résoudre ce problème ?

    Merci de votre aide ...

  6. #6
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    est ce qu'un :
    reglerait ton probleme?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Par défaut
    Non, cela ne change rien...

    J'explique clairement la situation :

    J'ai un JTree qui utilise pr un renderer un renderer qui étend la classe "DefaultTreeCellRenderer". Par consequent, tous les noeuds du JTree sont des JLabel (étendus).

    J'ai customisé ces JLabel de manière a ce que chaque noeud du JTree représente un rectangle aux coins arrondis avec un texte et une couleur background particulière pr chaque fils. Pour cela, entre autre, j'ai créé ma propre classe MyBorder qui étend la classe AbstractBorder.

    Malheureusement, a l'affichage, la couleur background de tous les noeuds s'étend plus loin que les limites du border MyBorder que je leur ai associé...
    Elle s'étend au niveau du border par défaut du JPanel...

    Je n'arrive pas a voir d'ou vient le probleme...


    Merci pr votre aide..

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Par défaut
    Bonjour,


    personne n'a d'idée?

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah c'est simple, le JPanel se peind dans ses limites normales car tu ne lui a pas dis de faire autrement.

    Donc il va falloir que tu redéfinisse la méthode paintComponent de ton JPanel pour que celle ci afficher un reactangle rond

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Par défaut
    Ok, merci pour ta réponse

    alors je dois redéfinir la méthode : void paintComponent(Graphics g). Je me pose alors de petites questions (j'essai de comprendre...) :

    1) pkoi la méthode paintComponent et pas la méthode paint ou la méthode paintBorder ou paintXxx ...? Comment est géré le mécanisme? C'est la méthode paint qui appelle toutes les autres méthodes lors de l 'exécution?

    2) je ne vois pas quoi mettre exactement ds le corps de cette méthode... Je me dis que je dois dessiner mon rectangle qui représente mon border, mais ds ce cas
    pkoi y a t il justement une autre méthode paintBorder? La rédéfinir elle seule ne suffirait il pas?

    3) Et si je veux dessiner mon rectangle, je n'ai que le graphics g en paramètre, quels valeurs attribuer alors aux autres paramètres de la méthode drawRoundRectangle(x, y, width, height, arcWidth, arcHeight); ? Je m'explique : par exemple, lorsque j'ai redéfini mes border à partir de la classe AbstractBorder, j'ai du redéfinir la méthode paintBorder(Component c, Graphics g, int x, int y, int width, int height) , je n'avais plus qu'a appeler la méthode drawRoundRect(..) avec les mêmes paramètres (+ou - des variables).

    Merci de votre aide.

    motorenshi.

Discussions similaires

  1. Donner une couleur à un JLabel qui a un Border
    Par Goupo dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/01/2008, 14h35
  2. [Look and feel] Texte des JLabels en gras
    Par aliasjcdenton dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 26/01/2006, 12h49
  3. [JLabel] Redimensionnement auto non désiré
    Par SamRay1024 dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 21/05/2004, 19h13
  4. [JLabel][HTML]pourquoi mes images s'affiche pas?!
    Par La Truffe dans le forum Composants
    Réponses: 8
    Dernier message: 29/04/2004, 12h23
  5. JPanel et Border
    Par titoine dans le forum Débuter
    Réponses: 3
    Dernier message: 22/04/2003, 16h58

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