2

所以这是一个非常简单的问题,但我找不到一个简单的方法来实现它。我基本上有 3 个 JPanel 实例:北、南和中心。通常,如果您使用窗口高度,则中心面板将是可变的。我想要的是让南面板高度可变而不是中心高度。

这是代码:

public class TestCode {

public static void main(String[] args) {

    JFrame window = new JFrame("Test");
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(300, 300);

    JPanel panelUp = new JPanel();
    JPanel panelCenter = new JPanel();
    JPanel panelDown = new JPanel();

    window.add(panelUp, BorderLayout.NORTH);
    window.add(panelCenter, BorderLayout.CENTER);
    window.add(panelDown, BorderLayout.SOUTH);

    panelUp.setBackground(new Color(200, 240, 200));
    panelCenter.setBackground(new Color(240, 200, 200));
    panelDown.setBackground(new Color(200, 200, 240));

    panelUp.setPreferredSize(new Dimension(panelUp.getWidth(), 50));
    panelCenter.setPreferredSize(new Dimension(panelCenter.getWidth(), 100));
    panelDown.setPreferredSize(new Dimension(panelDown.getWidth(), window.getHeight() - 150));

    window.setVisible(true);
}

}
4

4 回答 4

3
***************BorderLayout************************
*  ********BorderLayout*in*PAGE_START************ *
*  *                                            * *
*  *   Component in PAGE_START                  * *
*  *                                            * *
*  *   Component in PAGE_END                    * *
*  *                                            * *
*  ********************************************** *
*                                                 *
*      Component in CENTER                        *
*                                                 *
***************************************************

有关如何组合布局以创建所需布局的更多想法,请参阅嵌套布局示例。

于 2013-06-13T11:08:40.237 回答
2

我想要的是让南面板高度可变而不是中心高度。

于 2013-06-13T09:42:17.287 回答
1

只需将顶部和中心添加到本身就是边框布局的面板中:

public static void main(String[] args) {

    JFrame window = new JFrame("Test");
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(300, 300);


    JPanel innerPanel = new JPanel(new BorderLayout());


    JPanel panelUp = new JPanel();
    JPanel panelCenter = new JPanel();
    JPanel panelDown = new JPanel();

    window.add(innerPanel, BorderLayout.NORTH);
    window.add(panelDown, BorderLayout.CENTER);

    innerPanel.add(panelUp, BorderLayout.NORTH);
    innerPanel.add(panelCenter, BorderLayout.SOUTH);

    panelUp.setBackground(new Color(200, 240, 200));
    panelCenter.setBackground(new Color(240, 200, 200));
    panelDown.setBackground(new Color(200, 200, 240));

    panelUp.setPreferredSize(new Dimension(panelUp.getWidth(), 50));
    panelCenter.setPreferredSize(new Dimension(panelCenter.getWidth(), 100));
    panelDown.setPreferredSize(new Dimension(panelDown.getWidth(), window.getHeight() - 150));

    window.setVisible(true);
}

这段代码应该完全按照你的意愿做,而几乎不改变代码

于 2013-06-13T11:13:16.047 回答
0

您是否尝试过为北面板和中面板设置最大尺寸( setMaximumSize )?或者直接setSize

于 2013-06-13T09:42:09.303 回答