Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将组件堆叠在另一个组件上,以便它们';d保持垂直尺寸?_Java_Swing_Layout_Jpanel_Layout Manager - Fatal编程技术网

Java 如何将组件堆叠在另一个组件上,以便它们';d保持垂直尺寸?

Java 如何将组件堆叠在另一个组件上,以便它们';d保持垂直尺寸?,java,swing,layout,jpanel,layout-manager,Java,Swing,Layout,Jpanel,Layout Manager,我有一个父JPanel,其子组件堆叠在另一个组件上。但是,它们不会按我所希望的那样调整大小: 代码: }当空间可用时,BoxLayout将使组件增长到最大尺寸 当您将面板添加到框架中时,而不是将其添加到中心(这将允许面板增长),您将其添加到页面开始,这将考虑高度: JPanel north = new JPanel(); north.setLayout( new BoxLayout(north, BoxLayout.PAGE_AXIS) ); // add loop to add panel

我有一个父JPanel,其子组件堆叠在另一个组件上。但是,它们不会按我所希望的那样调整大小:

代码:


}

当空间可用时,BoxLayout将使组件增长到最大尺寸

当您将面板添加到框架中时,而不是将其添加到中心(这将允许面板增长),您将其添加到页面开始,这将考虑高度:

JPanel north = new JPanel();
north.setLayout( new BoxLayout(north, BoxLayout.PAGE_AXIS) );
// add loop to add panels to the "north" panel

add(north, BorderLayout.PAGE_START);
另一种解决方案是使用长方体布局将面板包装到另一个面板中

JPanel panel = new JPanel();
panel.setLayout( new BoxLayout(panel. BoxLayout.PAGE_AXIS) );
// create your loop to add child panels

JPanel wrapper = new JPanel(); // uses FlowLayout by default which respects the preferred size.
wrapper.add( panel );
frame.add( wrapper );

我两个都不能用。你能给我一个示例程序吗?“我不能让其中任何一个工作”为什么?你犯了什么错误?“你能给我一个例子吗?”我问你同样的问题,你能发布一个说明你如何实施这些建议的帖子吗?解释一下为什么它们不适合你?很公平,修改过了。我两个都不能用。-实现我的建议的代码在哪里???不要更改内容面板的布局!不要直接将组件添加到内容窗格!而是创建一个面板,以便将其添加到使用BoxLayout的框架的“北”部分。然后将组件添加到此“北”面板。完成添加组件后,使用BorderLayout的适当约束将“north”面板添加到框架中。请参阅基本结构的更新代码。我使用了您的第一个示例。我会在上面更新。非常感谢你!
JPanel north = new JPanel();
north.setLayout( new BoxLayout(north, BoxLayout.PAGE_AXIS) );
// add loop to add panels to the "north" panel

add(north, BorderLayout.PAGE_START);
JPanel panel = new JPanel();
panel.setLayout( new BoxLayout(panel. BoxLayout.PAGE_AXIS) );
// create your loop to add child panels

JPanel wrapper = new JPanel(); // uses FlowLayout by default which respects the preferred size.
wrapper.add( panel );
frame.add( wrapper );