Java 添加新组件时展开的面板

Java 添加新组件时展开的面板,java,swing,user-interface,jpanel,layout-manager,Java,Swing,User Interface,Jpanel,Layout Manager,我想有多个垂直面板在我的框架,将开始与一个按钮在他们。当我按下这些按钮时,它们会向这些面板添加更多按钮。添加新按钮时,面板应展开并推动其下方的所有其他面板。我在上面添加了我想要的示例图像 我不是一个新的布局管理器,有任何布局管理器,我可以使用这个?如果没有,我能做什么 它取决于子面板的布局管理器和父面板的布局管理器。两个布局管理器都需要能够增长。根据图片,您可以对父面板和子面板使用垂直的BoxLayout 将组件添加到可见面板时,需要revalidate()面板以调用布局管理器,因此基本代码为:

我想有多个垂直面板在我的框架,将开始与一个按钮在他们。当我按下这些按钮时,它们会向这些面板添加更多按钮。添加新按钮时,面板应展开并推动其下方的所有其他面板。我在上面添加了我想要的示例图像

我不是一个新的布局管理器,有任何布局管理器,我可以使用这个?如果没有,我能做什么


它取决于子面板的布局管理器和父面板的布局管理器。两个布局管理器都需要能够增长。根据图片,您可以对父面板和子面板使用垂直的
BoxLayout

将组件添加到可见面板时,需要
revalidate()
面板以调用布局管理器,因此基本代码为:

JButton button = new JButton(...);
panel.add( button );
panel.revalidate();
panel.repaint();

阅读Swing教程中关于的部分,以了解更多信息和工作示例,帮助您入门。

使用
GridLayout
,列设置为1,行设置为0。您应该做的第一件事是:访问以了解如何/询问什么。基本上,你的问题太宽泛了,因为有多种方法可以解决这个问题,而这实际上取决于你目前的知识,以了解什么最适合你。话虽如此,您应该看看JScrollPane。因此,您的Panel 1应该进入这样一个滚动窗格,如果“内部”组件需要更多空间,它会添加滚动条。谢谢,BoxLayout正是我想要的。现在我尝试将按钮的宽度设置为它们所属面板的宽度。你们对此有什么建议吗?嗯,盒子布局尊重每个组件的“最大尺寸”。对于JButton,最大大小等于首选大小。您应该能够使用GridLayout。组件是一个网格布局,将更改大小以填充可用空间。或者你可以使用GridBagLayout。阅读教程并使用每个布局管理器学习其功能。