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

 Java Discussion :

JFrame, Menu, JPanel.


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut JFrame, Menu, JPanel.
    Bonsoir,

    étant débutant, question de débutant:

    j'ai une fenêtre avec un menu, dans ce menu, j'ai un item qui me permet d'ajouter un JPanel, ça c'est bon. Maintenant, lorsque je choisi ce même item, il me rajoute un autre JPanel à côté du premier, alors que moi évidemment, j'aimerais que mon Jpanel existant soit supprimé pour en mettre un nouveau.

    J'ai essayé la fonction remove(monPan), removeAll()...

    Je vous remercie d'avance

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Consultation de la boule de cristal... difficile de voir l'avenir sans code.

    essayes quand même ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    panel.removeAll();
    panel.updateUI();

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut
    ok, voilà mon code :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    public class FenetreDessin extends JFrame implements ActionListener {
     
    	public Fenetre() {
     
    		super("yooooo");
     
    		JMenuBar barre = new JMenuBar();
    		this.setJMenuBar(barre);
     
    		JMenu mFichier = new JMenu("Menu");
    		barre.add(mFichier);
     
    		JMenuItem mIOuvrir = new JMenuItem("nouveau");
    		mIOuvrir.addActionListener(this);
     
    		mFichier.add(mIOuvrir);
                    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setVisible(true);
     
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		String s = e.getActionCommand();
    		if (s.equals("nouveau")) {
     
    		int taille = Integer.parseInt(JOptionPane.showInputDialog(null, "Taille :"));
     
    		// Creation des composants
    		JTextField tTypegrille = new JTextField(20);
    	        JTextField tJoueur = new JTextField(20);
    		JPanel p1 = new JPanel(new FlowLayout());
    	        JPanel p2 = new JPanel(new FlowLayout());
    	        p1.setMaximumSize(new Dimension(400, 30));
    	        p2.setMaximumSize(new Dimension(400, 30));
    	        p1.add(tTypegrille);
    	        p2.add(tJoueur);
     
    	        PanelDessin p = new p(taille);
    	        psetPreferredSize(new Dimension(taille, taille));
    	        p.setMaximumSize(new Dimension(taille, taille));
    	        p.setBackground(Color.BLUE);
    	        p.addMouseListener();
     
    	        JPanel pan = new JPanel();
    	        pan.setLayout(new BoxLayout(pan, BoxLayout.Y_AXIS));
     
    	        pan.removeAll();
    	        pan.updateUI();
     
    	        pan.add(p1);
    	        pan.add(p);
    	        pan.add(p2);
     
    	        this.add(pan);
     
    	        this.pack();
     
    	        pan.setVisible(true);
    		}
    	}
     
    	public static void main(String[] args) {
     
    		FenetreDessin fd = new FenetreDessin();
    		fd.setBounds(50, 50, 500, 500);
     
    	}
    }

  4. #4
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    2 solutions pour régler ton problème :

    Problème 1: Ici tu crée un nouveau panel puis tu supprime se qu'il contient... En faite il ne supprime rien du tout puisqu'il n'y a rien dans ton panel (il vient d'être créé).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    JPanel pan = new JPanel();
    pan.setLayout(new BoxLayout(pan, BoxLayout.Y_AXIS));	        
    pan.removeAll();
    pan.updateUI();
    Solution 1: Tu réutilise toujours le même panel pour ta fenêtre. c.a.d, tu mets "JPanel pan" en attribut de ta classe et tu l'initialise dans le constructeur. Et là tu pourras remove puisque ton panel sera remplie.

    Problème 2: tu fais c.a.d ajout d'un panel à ma fenêtre. Donc c'est normal si tu as 2 panels cote à cote. si tu fais des add.
    Solution 2 :Tu indique quel est le conteneur de ta fenêtre, il ne peut y en avoir qu'un seul.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setContentPane(pan);
    Il va écraser le conteneur déjà existant pour le remplacer par pan.

    Solution1 , Solution2 ou les 2. Au travail

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut
    Ivelios, merci beaucoup

  6. #6
    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
    @Ivelios Un updateUI() est trop lourd comme appel pour déclencher la validation et l'actualmisation de l'interface en général, un simple revalidate suffit et aura un cout moindre.

  7. #7
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Deuxième Erreur (si on peut appeler ça une erreur ) de la journée que je post sur le forum...
    C'est vraiment pas mon jour.
    Merci d'avoir rectifier le tire sinok

    ps : Bonne continuation Mordikkuss

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

Discussions similaires

  1. Comment dimensionner JFrame ou JPanel en fonction de leur contenu
    Par L4BiN dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 15/02/2007, 14h49
  2. resize JFrame = resize JPanel
    Par dark2 dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 17/10/2006, 17h22
  3. Récupérer dimensions zone utile JFrame ou JPanel
    Par Matworms dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 23/05/2006, 21h12
  4. [SWING] JFrame dans JPanel = possible?
    Par rprom1 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/03/2006, 16h03
  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