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 :

[JFrame] Composants fantômes


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut [JFrame] Composants fantômes
    Voila, lors d'un clic sur un JmenuItem, j'affiche une frame contenant un JPanel, un Jlabel, un jbutton et un JTextField. Bien que tous ses champs soient setVisible(true), la frame s'affiche vide... jusqu'à ce qu'on clique sur la bordure de redimensionnement (sans la redimensionner pour autant, il faut juste cliquer dessus), et alors les composants apparaissent par magie !!!
    Pourquoi??
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	fgrilleal=new JFrame("Création d'une grille alétoirement remplie");
    	fgrilleal.add(panelcreatgrille);//panelcreatgrille=jpanel
    	taillegrille.setVisible(true);//jlabel
    	txttaillegrille.setVisible(true);//jtextfield
    	okgral.setVisible(false);//jbutton
    	fgrilleal.setVisible(true);//frame
    	fgrilleal.setSize(new Dimension(200,100));
    	fgrilleal.repaint();

  2. #2
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    change :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgrilleal.add(panelcreatgrille);//panelcreatgrille=jpanel
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgrilleal.getContentPane().add(panelcreatgrille);//panelcreatgrille=jpanel
    Il ne faut pas ajouter des composants directement dans la JFrame... Il faut passer par son content pane

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut
    ok, je ne savais pas, je note.
    Mais malheureusement, cela ne change rien du tout au problème...

  4. #4
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Ensuite je ne comprends pas ce morceau de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    taillegrille.setVisible(true);//jlabel
    txttaillegrille.setVisible(true);//jtextfield
    okgral.setVisible(false);//jbutton
    Ce n'est normalement pas la peine d'invoquer ces méthodes sur des composants...

    Sinon, il nous manque du code pour savoir d'où viens l'erreur... Peut être le code concernant la création du panel que tu ajoutes dans la JFrame avec l'insertion des composants...

  5. #5
    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
    Il faut que tu fasses le setVisible après avoir ajouté tes composants et pas avant. de même le setVisible ne doit êtrye appelé que sur la JFrame, pas beosin de le faire sur les autres composants.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut
    concernant ces 2 LÀ :
    taillegrille.setVisible(true);//jlabel
    txttaillegrille.setVisible(true);//jtextfield
    c'était parce qu'à la création, je les cachais (pour rien d'ailleurs), donc j'ai supprimé ces lignes.

    concernant la ligne
    okgral.setVisible(false);
    ce bouton est caché, parce que j'ai branché dessus un key listener pour que qd on clique sur Entrée, ça clique sur le bouton.

    enfin, voici le code concernant le jpanel panelcreatgrille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            panelcreatgrille=new JPanel(new BorderLayout());
            panelcreatgrille.add("West",taillegrille);
    	panelcreatgrille.add("Center",txttaillegrille);
    	panelcreatgrille.add("East",bok);
            bok.add(okgral);
    	bok.add(okgrman);//celui ci est caché

Discussions similaires

  1. [Swing] Composants 'fantômes'
    Par dk dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 18/09/2007, 16h34
  2. Plusieurs composant dans une Jframe
    Par toitoine01 dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 31/03/2006, 15h47
  3. Mise a jour de composent d'une Jframe deja compilé
    Par cellestion dans le forum Agents de placement/Fenêtres
    Réponses: 14
    Dernier message: 24/03/2006, 15h51
  4. Retirer un composant d une JFrame
    Par nicotine002 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 27/01/2006, 18h17
  5. Disposition de composants dans une JFrame
    Par Regis.C dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 21/03/2005, 17h38

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