【问题标题】:Which Swing layout manager should I use?我应该使用哪个 Swing 布局管理器?
【发布时间】:2015-06-05 14:21:27
【问题描述】:

我正在创建一个如下所示的 Swing 对话窗口:

headerfooter 区域具有固定大小。 area 1 and 2 的大小不固定。它们可以有几行内容,并且行号可以增加at runtime

以后,我可能需要添加area 3

我应该如何使用 Swing 布局管理器来实现这个 UI?

添加 1

区域 1 和区域 2 相互独立。

在它们中的每一个中,我想垂直放置几个面板。每个面板都有一行字符串。面板编号在运行时会有所不同。

【问题讨论】:

  • BorderLayoutGridLayoutBorderLayoutGridBagLayout

标签: java swing awt layout-manager


【解决方案1】:

主布局使用BorderLayout

  1. 将“标题”添加到NORTH
  2. 将“页脚”添加到SOUTH
  3. 创建另一个面板并将其添加到CENTER。然后将此面板的布局管理器设置为适当的布局管理器。我们无法建议您为此面板使用什么布局管理器,因为我们不知道这两个组件区域如何相关。然后将“area1”和“area2”添加到此面板。

这个答案的关键是您不需要使用单个布局管理器,您可以使用不同的布局管理器嵌套面板。

【讨论】:

  • 区域1和区域2相互独立。
  • @smwikipedia,是的,但我们不知道它们应该如何随着窗口大小的变化而调整大小。那么是否需要滚动?它们是否有最大尺寸等...所以您需要选择布局管理器来根据需要调整组件的大小。阅读 Layout Managers 上的 Swing 教程。您可以使用 GridBagLayout、BoxLayout、GridLayout、SpringLayout。组布局,弹簧布局。了解每种方法的工作原理,然后选择您想要的。
【解决方案2】:

我会为此使用BorderLayout

  • headerPAGE_START
  • footerPAGE_END
  • area1area2 (每个都在 JScrollPane 中)在 JSplitPaneCENTER

【讨论】:

  • JSplitPane 仅拆分 2 个组件。但我将来可能需要area 3
  • “但我以后可能需要一个区域 3” 好吧,既然我们没有水晶球,那么 在问题中具体说明?
  • “每个面板都有一行字符串。” 去掉面板,改用JList
猜你喜欢
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 2011-09-13
相关资源
最近更新 更多