2017-07-24 3 views
2

J'ai ajouté deux JPanels dans mon MainFrame. Le problème que j'ai est qu'une trame apparaît sur l'autre. Comment puis-je corriger la taille de sorte que je déplace un des panneaux vers le bas.Déplacer deux JPanel à l'intérieur d'un MainFrame, lorsque ces JPanels ont une disposition Absolut

public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        MainFrame frame = new MainFrame(); 


        Panel1 panel1= new Panel1(); 
        Panel2 panel2= new Panel2(); 

        frame.getContentPane().add(panel1.contentPanel); 
        frame.getContentPane().add(panel2.contentPanel); 



        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

La complication est que les deux ce que j'ai JPanels:

Panel1.java 
    contentPanel.setLayout(null); 

    Panel2.java 
    contentPanel.setLayout(null); 

donc je ne peux pas utiliser le GridBagLayout dans le Mainframe, parce que je suis une mise en page en utilisant absolue.

Je veux déplacer le Panel2 vers le bas, de sorte qu'il apparaisse Panel1 en haut de Panel2.

+2

* "Je ne peux donc pas utiliser GridBagLayout dans le mainframe, car j'utilise une disposition absolue." - Ne pas utiliser les mises en page 'null': / – MadProgrammer

Répondre

1

Vous ajoutez les deux panneaux à la même position en raison de leur chevauchement. Vous pouvez utiliser la disposition de bordure pour les définir à la place de la mise en page null. Voir l'exemple J'ai ajouté les deux panneaux, mais un au début de la page et l'autre à la fin de la page.

JPanel panel1 = new JPanel(); 
JPanel panel2 = new JPanel(); 
JButton b1 = new JButton("b1"); 
JButton b2 = new JButton("b2"); 
panel1.add(b1); 
panel2.add(b2); 
JFrame frame = new JFrame(); 
frame.getContentPane().add(panel2, BorderLayout.PAGE_END); 
frame.getContentPane().add(panel1, BorderLayout.PAGE_START); 
frame.pack(); 
frame.setVisible(true);