当这些JPanel具有Absolut Layout时,在MainFrame中移动两个JPanel

时间:2017-07-24 10:15:29

标签: java swing jframe jpanel

我在MainFrame中添加了两个JPanel。我遇到的问题是一帧出现在另一帧之上。如何修复尺寸,以便将其中一个面板向下移动。

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,因此它在Panel2上面显示Panel1。

1 个答案:

答案 0 :(得分:2)

您要将两个面板添加到相同的位置,因为它们是重叠的。您可以使用边框布局来设置它们而不是空布局。查看示例。我添加了两个面板,但一个在页面开始,另一个在页面结束。

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