调整gridlayout上的面板大小

时间:2016-03-25 10:20:30

标签: java swing layout-manager grid-layout

我试图用Java摇摆做一个简单的ui游戏。这是我的目标布局设计:(所有面板都有相同的宽度,请原谅我的图纸)

layout design

我需要3个小高度面板和1个大面板

我使用GridLayout和4x1。我在第一个面板上添加了一些按钮。

mainFrame = new JFrame("Basket Game");
mainFrame.setLayout(new GridLayout(4, 1));


options = new JPanel();
options.setLayout(new FlowLayout());
options.setBorder( new TitledBorder("Options Menu") );

options.add(settings);
options.add(start);
options.add(pause);
options.add(reset);
options.add(exit);

mainFrame.add(options);

但它使第一个面板太大了。

form

如何设置这些面板的尺寸,或者我应该使用不同的布局图案。

1 个答案:

答案 0 :(得分:3)

使用GridLayout时,网格中的所有单元格都具有相同的大小,这就是您的面板占总高度的1/4的原因。

您可以考虑使用垂直BoxLayout

JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
// add the panels to mainPanel, then
mainFrame.setContentPane(mainPanel);

以下是一个示例,其中三个面板各包含一个按钮,另一个面板具有更大的尺寸:

        JFrame frame = new JFrame();

        JPanel p1 = new JPanel();
        p1.add(new JButton("11111"));
        JPanel p2 = new JPanel();
        p2.add(new JButton("222222"));
        JPanel p3 = new JPanel();
        p3.add(new JButton("3333"));
        JPanel p4 = new JPanel();
        p4.setPreferredSize(new Dimension(50, 400));

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

        mainPanel.add(p1);
        mainPanel.add(p2);
        mainPanel.add(p3);
        mainPanel.add(p4);

        frame.setContentPane(mainPanel);
        frame.pack();
        frame.setVisible(true);