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

Agents de placement/Fenêtres Java Discussion :

Problème décalage du JPanel dans une JFrame a cause du JMenuBar


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Problème décalage du JPanel dans une JFrame a cause du JMenuBar
    Bonjour à tous,

    j'ai un gros souci dans mon appli. Je m'explique, j'ai une JFrame avec un JMenuBar. Jusque la pas de souci

    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
     
     
    public class Plateforme extends JFrame {
       ... 
      public Plateforme() {
          //appel du constructeur de la JFrame
          super();
     
          menu = new Menu(); //Menu étant faisant un extends de JMenuBar
     
          this.getContentPane().setLayout(null);
          this.setJMenuBar(menu);
     
          ...
          this.setContentPane(ihmChargement);//ihmChargement est du type JPanel
          ...
     
         }
       ....
    }
    jusque là tt va bien

    par contre lorsque je souhaite modifier le panel de ma JFrame j'ai un souci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setContentPane(ihmAccueil);//ihmAccueil est du type JPanel
    le nouveau JPanel s'affiche bien mais avec un decalage lié à la hauteur de mon JMenuBar Ce nouveau JPanel s'affiche a partir du coin haut gauche de la JFrame sans prendre en compte la hauteur de mon JMenuBar

    Pour corriger cela je suis obligé de deplacer mon JPanel a l'aide de la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.getContentPane().setBounds(0, menu.getHeight(), frameWidth, frameHeight);
    ce qui provoque un scintillement de mon interface pas très joli. AUriez vous une idée de l'origine du pb svp

    merci d'avance

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    A mon avis, le problème vient de son setLayout(null);

    utilises un des Layout SWING déjà définis pour le placement de tes composants. Il te simplifieras grandement la vie, et gèrera tout seul (et sans scintillement) le placement de tes objets.

    En plus, tu multiplieras les possibilités: tu pourras créer plusieurs JPanels, les placer à divers endroits de ta fenêtre, et les modifier/remplacer indépendemment avec un minimum de risques de provoquer des bugs graphiques.

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    Coucou,

    j'ai deja fait une appli java de ce type et j'avais aucun soucis...
    cela n'a peut etre rien avoir avec ton problème mais tu n'utilise pas de layout ??? si ce n'est pas le cas essais peut etre d'utiliser un layout (un border layout par exemple), de creer un panel et le disposer dans ta fenetre (ds le center). et qd tu rajoute ton Jpanel, defini ton panel de la fenetre comme etant le nouveau ... ca peut peut-etre marcher ...

    ++

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    j'ai tenté de remplacer le layout manager de mon contentPane (panel par défault de ma frame) par :
    - un manager AWT -> meme problème
    - un manager SWING -> meme problème

    J'ai ajouter une JPanel de contenu qui prend toute ma fenetre et j'utilise ce panel à la place du panel par défaut. Le problème est différent mais le résultat est pire (je ne vois pas la globalité du panel malgré l'appel a un repaint et en plus ca scintille toujours)

    ca devrait pourtant pas etre compliqué a faire changer le panel par défaut d'une jframe contenant un jmenubar

    je reste preneur si vous avez d'autres idées

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    "J'ai ajouter une JPanel de contenu qui prend toute ma fenetre et j'utilise ce panel à la place du panel par défaut. Le problème est différent mais le résultat est pire (je ne vois pas la globalité du panel malgré l'appel a un repaint et en plus ca scintille toujours) " -> vi un repaint ni fera rien, j'avais eu le meme probleme que j'avais reussi a resoudre, mais je sais pu comment et g po mon projet sous les yeux. et la je pourrais te le dire que lundi... ou au pire dimanche soir. il me semble que j'avais supprimer le contenu du panel et ensuite fait juste une affectation et ca fonctionner, mais je regarderais.

    tu pourrait envoyer l'ensemble du code qui corresponde a l'ihm ???

    en effet ce scintillement et po logique ... tu avait enlever ton "this.getContentPane().setBounds(0, menu.getHeight(), frameWidth, frameHeight);" , mais tout compte fait c normal que ca scintille avec ca, car tu fait un setBound sur le container de la fenetre donc a chaque rafraichissement il remet a jour .... ^o)

  6. #6
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Le problème est que tu remplaces le content pane. Enlève la ligne setLayout(null) et change ton this.setContentPane(ihmChargement); en this.getContentPane().add(ihmChargement). Tout marchera parfaitement.

Discussions similaires

  1. JPanel dans une JFrame ok, mais JPanel dans un JScrollPane dans une JFrame non :(
    Par FenX. dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 22/05/2008, 10h45
  2. Inclusion de JPanel dans une JFrame
    Par greatmaster1971 dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 04/04/2008, 23h43
  3. SWING: des JPanel dans une JFrame
    Par julien.63 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 02/12/2007, 19h21
  4. Positionner précisement plusieurs JPanel dans une JFrame.
    Par RadicalBob dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 13/06/2006, 22h42
  5. Gestion de menu, JPanels dans une JFrame
    Par Doc.Fusion dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 03/12/2004, 18h27

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