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

Composants Java Discussion :

Pas de repositionnement de mes JLabel sur mon JPanel ?


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Pas de repositionnement de mes JLabel sur mon JPanel ?
    Bonjour,


    Je rencontre actuellement un petit probleme quant au positionnement d'objets JLabel sur un JPanel : j'ai un Vector, contenant des objets de type NC (classe contenant un JLabel et un Point, representant les coordonnees).

    Je place mes JLabel sur le JPanel sans souci, puis, quand j'ai termine, serialize le Vector dans un fichier et quitte l'appliquation.
    Le probleme c'est que quand je re-ouvre le fichier, les JLabel sont bien ajoutes au JPanel mais leurs coordonnees ne sont pas du tout respectees : ils sont placees en haut, par defaut.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i=0 ; i<components.size() ; i++) {
    rightArea.add(Items.getJLabelNo(i));      // ajout des JLabel au JPanel
    Items.getJLabelNo(i).setLocation(Items.getCoordNo(i));    // repositionnement des JLabel dans le JPanel
    }

    Quelqu'un a une idee du probleme ?

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Juste une remarque de conception sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Items.getJLabelNo(i).setLocation(Items.getCoordNo(i))
    Cela signifie que Items contient une liste de JLabel et une liste de Point ?
    Il faudrait plutôt créer une classe qui contient un seul JLabel et son propre Point. Ensuite, pour appliquer la position au JLabel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListe.get( i ).applyLocation()

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Items.getJLabelNo(int) est une methode statique qui recupere un JLabel dans un NC...

    A quel objet s'applique la methode applyLocation ?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par zzzer Voir le message
    A quel objet s'applique la methode applyLocation ?
    A la classe qui gère un JLabel et son Point. C'est une conception un peu plus orientée objet.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    D'accord...

    Quoi qu'il en soit, je ne pense pas que le problème vienne de là, mais plutôt, je pense, d'un problème de rafraîchissement (type validate(), revalidate() ou repaint() ; mais j'ai déjà testé tout ça et rien à faire :/)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Voici un code plus complet, soulevant exactement le meme probleme :

    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
    public class Main
    {
        public static JPanel jp;
        public static JFrame f;
        public static Vector components = new Vector<JLabel> ();
     
        public static void main(String[] args)
        {
            f = new JFrame();
            f.setExtendedState(JFrame.MAXIMIZED_BOTH);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setVisible(true);
     
            components.add(new JLabel("toto"));
            components.add(new JLabel("tata"));
            components.add(new JLabel("tutu"));
     
            jp = new JPanel();
            jp.setBackground(Color.GREEN);
     
            for (int i=0 ; i<components.size() ; i++)
            {
                ((JLabel)components.get(i)).setLocation(i*50,i*50);
                jp.add((JLabel)components.get(i));
            }
            f.add(jp);
        }
    }

    Merci d'avance...

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par zzzer Voir le message
    D'accord...
    Quoi qu'il en soit, je ne pense pas que le problème vienne de là
    Tout à fait. C'était juste une petite remarque de conception, c'est tout

    Citation Envoyé par zzzer Voir le message
    Voici un code plus complet, soulevant exactement le meme probleme
    Le "setLocation" ne peut pas définir l'emplacement des composant car c'est le layout du JPanel qui s'en occupe.
    Si tu veux vraiment positionner les composant ainsi, tu dois au préalable faire :

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Si tu veux vraiment positionner les composant ainsi, tu dois au préalable faire :

    Parfait, c'était ça qu'il me manquait !

    Merci beaucoup !

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

Discussions similaires

  1. Présenter la fonction Debug à mes collègues sur mon projet PHP ?
    Par Oppenheimer dans le forum NetBeans Platform
    Réponses: 1
    Dernier message: 15/04/2013, 17h49
  2. Mes icones sur mon bureau sont toutes gelées
    Par DEV-10 dans le forum Windows Vista
    Réponses: 2
    Dernier message: 01/12/2010, 19h18
  3. [CR 8] je n'arrive pas a afficher mes données sur mon etat
    Par obydissonn dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 29/03/2010, 12h57
  4. Réponses: 8
    Dernier message: 29/11/2008, 14h32
  5. Réponses: 3
    Dernier message: 26/02/2007, 11h31

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