2017-07-24 1 views
2

Ich habe zwei JPanels in meinem MainFrame hinzugefügt. Das Problem, das ich habe, ist, dass ein Bild über einem anderen erscheint. Wie kann ich die Größe korrigieren, sodass ich eine der Ebenen nach unten verschiebe?Verschiebe zwei JPanel innerhalb eines MainFrames, wenn diese JPanels ein Absolut Layout haben

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(); 
       } 
      } 
     }); 
    } 

Die Komplikation ist, dass beide dieses JPanels ich habe:

Panel1.java 
    contentPanel.setLayout(null); 

    Panel2.java 
    contentPanel.setLayout(null); 

So kann ich nicht die GridBagLayout im Mainframe verwenden, weil ich ein Absolute-Layout verwenden.

Ich möchte das Panel2 nach unten verschieben, so dass Panel1 oben auf Panel2 erscheint.

+2

* "Also kann ich das GridBagLayout nicht im Mainframe verwenden, da ich ein Absolute Layout verwende." - Verwenden Sie keine 'Null'-Layouts: / – MadProgrammer

Antwort

1

Sie fügen beide Felder an derselben Position ein, aufgrund derer sie sich überlappen. Sie können das Rahmenlayout verwenden, um sie anstelle des Nulllayouts festzulegen. Siehe das Beispiel. Ich habe beide Panels aber eins beim Seitenbeginn und andere beim Seitenende hinzugefügt.

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); 
Verwandte Themen