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 :

Enlever les espaces entre les JLabel


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club Avatar de Freeluvs
    Profil pro
    Inscrit en
    Février 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 78
    Points : 57
    Points
    57
    Par défaut Enlever les espaces entre les JLabel
    Bonjour à tous,

    J'ai un petit soucis: je veux coder un "jeu" dans lequel des mots sont cachés dans un grand un texte constitué de plein de caractères qui ne veulent rien dire.
    En gros un truc du genre:

    aoifezpfezjfzeipojfezpijfezinformatiquejfezpjfzepcompilateurjpofzejpofez

    Les chaine de caractères qui ne veulent rien dire et les mots sont dans un fichier XML. Je parses ce fichier XML, je met chaque élément dans un JLabel et j'ajoutes tout à mon panel (en FlowLayout donc).
    Le truc, c'est qu'à l'affichage, les JLabel sont séparés les un des autres par quelques pixels, ce qui bien entendu gâche tout l'exercice :/

    Ca donne un truc du style:

    aoifezpfezjfzeipojfezpijfez informatique jfezpjfzep compilateur jpofzejpofez

    Y'a t'il un moyen d'enlever l'espacement entre les JLabel ? Ou alors y'a t il un LayoutManager qui gère l'espacement des composants ?

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Points : 852
    Points
    852
    Par défaut
    Salut,

    Je n'ai pas la réponse, mais pourquoi ne pas mettre tout le texte dans un seul JLabel? et concaténer le texte.

  3. #3
    Membre du Club Avatar de Freeluvs
    Profil pro
    Inscrit en
    Février 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 78
    Points : 57
    Points
    57
    Par défaut
    Salut Génoce,

    Le soucis, c'est que sur les vrai mots je dois mettre un évènement.
    Quand on clic sur un "vrai" mot caché dans le texte, il se colore automatiquement en rouge.

    Si je met tout dans un seul JLabel concaténé, je ne pourrait pas faire cette gestion des évènements

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    il faut regarder du côté du layout du composant parent.
    En gros, tu dois ajouter tes différents JLabel dans un JPanel. Si tu n'as pas touché au Layout de ce JPanel, il utilise un FlowLayout, ce qui semble correspondre à ton besoin.
    Par contre, il utilise un FlowLayout avec l'espacement par défaut, qui doit être de 5 si ma mémoire est bonne.

    Donc tu n'a qu'à changer le flowLayout pour qu'il ait un espacement horizontal de 0.
    Tu peux le faire à l'initialisation de ton JPanel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JPanel monPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 5));

  5. #5
    Membre du Club Avatar de Freeluvs
    Profil pro
    Inscrit en
    Février 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 78
    Points : 57
    Points
    57
    Par défaut
    Salut Deaf,
    Ouaip je viens de voir ça à l'instant: j'avais juste à déclarer mon FlowLayout et lui appliquer:
    Mais ça revient exactement au même que ta méthode.
    Merci beaucoup

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La meilleure solution utiliser un composant texte tel qu'un JTextPane qui permet en même temps de donner un style particulier à telle ou telle zone de texte. Voir la notion de Style &cie dans la FAQ GUI.
    De plus ces composants peuvent être rendus non éditables.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

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

Discussions similaires

  1. Retirer les espaces entre les boutons
    Par j_esti dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 19/09/2013, 12h36
  2. Réponses: 7
    Dernier message: 20/11/2012, 14h24
  3. Gérer les espaces entre les mots
    Par kimikou dans le forum Langage
    Réponses: 6
    Dernier message: 12/07/2012, 12h48
  4. Réponses: 4
    Dernier message: 11/09/2007, 12h30
  5. Les DTD et les espaces entre cellules de tableaux
    Par YuGiOhJCJ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/01/2006, 22h26

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