1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 50
    Points : 29
    Points
    29

    Par défaut Problème d'affichage de fenêtre

    salut . je voudrait changer mon JPanel1 initiallement afficher en mon 2ieme JPanel apprès un clic de boutton.
    je fait donc:
    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
     
    	 private void nouveauActionPerformed(java.awt.event.ActionEvent evt) {                                        
     
            Nouveau n = new Nouveau();  /*public class Nouveau extends javax.swing.JPanel { ...  }  
                                                            c'est la classe de mon 2ieme panel */
     
                changerPanel(pFrame1,n,"Nouveau");
            }
        public void changerPanele(JInternalFrame JF, JPanel A, String titre)
        {
            JF.dispose();
            JF.setTitle(titre);
            JF.removeAll();
            JF.getContentPane().add(A);
            JF.setVisible(true);
        }
    le 1er Panel est bien retirer, le titre du JInternalFrame est bien changer; Mais le 2ieme panel ne s'affiche pas.
    Merci pour toute aide

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    10 425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 425
    Points : 24 857
    Points
    24 857
    Billets dans le blog
    2

    Par défaut

    Salut,

    La méthode dispose() ferme non seulement la JFrame, mais la rend inutilisable parce que çà la déconnecte de Swing (d'où le nom de la méthode, au lieu de close, et contrairement à un setVisible(false) (ou anciennement hide()) qui la cache seulement).

    Pour "changer" de panel, soit :

    1. tu disposes la JFrame actuelle, et tu en crées une nouvelle avec le nouveau panel
    2. soit tu changes le content pane dans la frame actuelle mais tu ne la disposes pas.


    Si tes deux panels sont appelés à être affichés souvent, alternativement (l'un ou l'autre), le mieux est encore de les mettre dans un JPanel avec CardLayout, ce qui te permettra d'en alterner l'affichage facilement.

    Exemple :
    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
    public class PanelsAlternatifs {
     
    	private static final String PANEL1 = "PANEL 1";
    	private static final String PANEL2 = "PANEL 2";
     
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame();
     
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JPanel panel = new JPanel();
    		CardLayout cardLayout = new CardLayout();
    		panel.setLayout(cardLayout);
     
    		createPanel(panel,cardLayout,PANEL1,PANEL2);
    		createPanel(panel,cardLayout,PANEL2,PANEL1);
     
    		frame.getContentPane().setLayout(new GridBagLayout());
    		frame.add(panel);
     
    		frame.setSize(600, 600);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	private static void createPanel(JPanel container, CardLayout cardLayout, String panelName, String panelAutre) {
    		JPanel panel = new JPanel(new BorderLayout());
    		JLabel label = new JLabel("LE " + panelName,SwingConstants.CENTER); 
    		label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
    		panel.add(label);
    		panel.add(label, BorderLayout.NORTH);
    		JButton button = new JButton("Afficher l'autre panel ("+panelAutre+")");
    		panel.add(button);
    		button.addActionListener(e-> cardLayout.show(container, panelAutre)); 
    		container.add(panel, panelName); // on donne un nom au panel dans le cardlayoyut pour pouvoir le sélectionner
    	}
     
    }
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [ExtJS] problème d'affichage de fenêtres
    Par pitou26 dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 18/11/2012, 13h03
  2. Réponses: 1
    Dernier message: 14/05/2006, 21h02
  3. [C#] Problème d'affichage d'une fenêtre (event Load)
    Par PB-W dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/03/2006, 14h48
  4. Problème d'affichage: fenêtres (frames) vides!
    Par NdmaX dans le forum Fenêtres/Dialogues
    Réponses: 6
    Dernier message: 12/07/2005, 22h23
  5. [Kylix] Problème d'affichage de fenêtres
    Par Progs dans le forum EDI
    Réponses: 1
    Dernier message: 01/01/2005, 03h46

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