如何创建一个 JPanel 来填充其父级的所有宽度?



我想在JFrameContentPane中创建一个JPanel,我想让我的JPanel填充contentPane的所有宽度。

我使用BoxLayout contentPane的布局。下面是我的代码:

getContentPane().setLayout(new BoxLayout(), BoxLayout.PAGE_AXIS);
JPanel row = new JPanel();
row.setLayout(new BoxLayout(row, BoxLayout.LINE_AXIS));
getContentPane().add(row);

你需要设置面板的最小/首选/最大尺寸,否则BoxLayout将不知道如何为面板分配适当的尺寸。参见本教程。

下面是一个可以使用的代码示例。如果您更改各种尺寸,或者注释setMinimumSize ()setPreferredSize ()方法调用,您将看到对面板绘制方式的影响。我将row面板的背景设置为红色,以便您在测试期间可以轻松看到面板。

JFrame frame = new JFrame ("Test");
frame.setSize (new Dimension (500, 500));
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane ();
contentPane.setLayout (new BoxLayout (contentPane, BoxLayout.PAGE_AXIS));
JPanel row = new JPanel();
row.setBackground (Color.RED);
row.setLayout(new BoxLayout(row, BoxLayout.LINE_AXIS));
row.setMinimumSize (new Dimension (100, 100));
row.setPreferredSize (new Dimension (250, 200));
row.setMaximumSize (new Dimension (500, 300));
contentPane.add(row);
frame.setVisible (true);

最新更新