2017-07-24 21 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);