10

可能重复:
Swing:如何将组件高度设置为容器的高度?

我如何划分JPanel,如下图所示有2个面板panel1和panel2 panel1应该占70%,panel2 30%或panel1应该大于panel2...我尝试过Gridlayout,Border Layout但它不起作用。任何帮助将不胜感激。

public class TestApplication extends JApplet {

private static final long serialVersionUID = 1L;

    JPanel p1,p2;

    public void init(){         
        setLayout(new GridLayout(3,1));
        p1=new JPanel();
        p2=new JPanel();

        p1.setBackground(Color.RED);
        p2.setBackground(Color.GREEN);

        add(p1);
        add(p2);
    }   
}

在此处输入图像描述

4

2 回答 2

13

您是否考虑过使用JSplitPane如何使用拆分窗格)?

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

public class TestApplication extends JApplet {

private static final long serialVersionUID = 1L;

    JPanel p1,p2;

    @Override
    public void init(){         
        setLayout(new BorderLayout());

        p1=new JPanel();
        p2=new JPanel();

        p1.setBackground(Color.RED);
        p2.setBackground(Color.GREEN);
        JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        sp.setResizeWeight(0.7);
        sp.setEnabled(false);
        sp.setDividerSize(0);

        sp.add(p1);
        sp.add(p2);
        add(sp, BorderLayout.CENTER);
    }   
}

在此处输入图像描述

于 2012-09-05T07:30:14.867 回答
1

如果您有一个外部 JFrame(或另一个 JPanel)f,您可以应用 BorderLayout 并将 p1 放在 NORTH 中,将 p2 放在 SOUTH 中。然后,使用

Dimension df = f.getSize();

您将获得外部容器 (f) 的尺寸。接下来,调用:

void setSize(Dimension d)

这边走:

p1.setSize(new Dimension(df.getWidth(), df.getHeight()*0.7));
p2.setSize(new Dimension(df.getWidth(), df.getHeight()*0.3));

最后,将这些 JPanel 添加到其容器中。

于 2012-09-05T07:32:10.547 回答