【问题标题】:Panel that expands when new components are added添加新组件时扩展的面板
【发布时间】:2019-03-11 18:44:30
【问题描述】:

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

我不是新的布局管理器,有什么布局管理器可以用来做这个吗?如果不是我能做什么?

【问题讨论】:

  • 使用GridLayout,列设置为 1,行设置为 0。
  • 您应该做的第一件事:访问help center 了解如何/在这里问什么。基本上你的问题太宽泛了,因为有多种方法可以解决这个问题,这真的取决于你目前的知识来理解什么最适合你。话虽如此,您应该以 JScrollPane 为例。因此,您的 Panel 1 应该进入这样一个滚动窗格,如果“内部”组件需要更多空间,则该面板会添加滚动条。

标签: java swing user-interface jpanel layout-manager


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,BoxLayout 正是我想要的。现在我正在尝试将按钮的宽度设置为它们所属的面板的宽度。你对此有什么建议吗?
  • 好吧,BoxLayout 尊重每个组件的“最大尺寸”。对于 JButton,最大尺寸等于首选尺寸。您应该能够使用 GridLayout。组件是一个 GridLayout 将改变大小以填充可用空间。或者您可以使用 GridBagLayout。阅读教程并与每个布局管理器一起玩以了解其功能。
猜你喜欢
  • 1970-01-01
  • 2021-05-03
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 2021-02-24
  • 1970-01-01
相关资源
最近更新 更多