2017-07-24 22 views
2

我在MainFrame內添加了兩個JPanel。我遇到的問題是一幀出現在另一幀之上。我如何修復尺寸,以便將其中一個面板向下移動。在MainFrame內移動兩個JPanel,當那些JPanel具有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(); 
       } 
      } 
     }); 
    } 

的複雜性在於,這兩者我JPanels有:

Panel1.java 
    contentPanel.setLayout(null); 

    Panel2.java 
    contentPanel.setLayout(null); 

所以我不能在主機上使用GridBagLayout的,因爲我使用的是絕對佈局。

我想將Panel2向下移動,因此Panel1出現在Panel2的頂部。

+2

*「所以我不能在大型機中使用GridBagLayout,因爲我使用絕對佈局。」 - 不要使用'null'佈局:/ – MadProgrammer

回答

1

您將兩個面板添加到相同的位置,因爲它們重疊。您可以使用邊框佈局來設置它們而不是空佈局。看例子。我已經添加了兩個面板,但一個在頁面開始,另一個在頁面末尾。

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