我应该将哪个LayoutManager用于Java GUI?

时间:2011-11-20 19:15:21

标签: java swing layout-manager

我想制作一个GUI并通过代码执行,而不是像Netbeans一样拖动所有内容。如果可能的话,我想设置我要插入的每个东西的坐标,因为它将为我提供我想要的精度。我已经尝试了GridBagLayout,并没有发现它是我喜欢的,但也许我不知道它知道该怎么做。也许MigLayout对我来说是个不错的选择,但我想知道我的需要是否更好。

总结:我想创建一个GUI,我可以直接添加每个对象的特定坐标。我使用哪种布局?

4 个答案:

答案 0 :(得分:5)

对于每个面板,您可以/应该具有不同的布局管理器,具体取决于您将在内部布局。没有“通用”布局管理器,特别是在手动编码时,使用“最合适”的布局管理器来完成您正在解决的任务是优雅和有用的。例如,非常高级的GridBagLayout无法模拟WrapLayout。

您可能会发现this page可用作正确布局管理器选择的提示列表。

但请注意,每个布局管理器都有其在Swing中的怪癖,因此从一个布局管理器切换到另一个布局管理器可能会给您带来一些小麻烦。例如,其中一些尊重Minimum / MaximumSize,有些则不尊重等等。

总结:您不应尝试“手动”设置坐标。虽然这是可能的,但以逻辑方式表达视觉元素之间的关系要好得多。这将有助于您使页面可调整大小,解决本地化,正确嵌套和提取控件,以及我目前不记得的许多其他地方。

答案 1 :(得分:2)

看看CoordinateLayout

  

允许根据绝对位置/尺寸布置组件   根据可用的布局空间进行调整。

答案 2 :(得分:1)

两者都做。在Eclipse中尝试WindowBuilder。它提供双向设计和代码生成。

答案 3 :(得分:1)

Specyfing coordinatates(即使用NullLayout)总是一个坏主意。应始终使用LayoutManager类来处理组件放置,因为它将处理您不应处理的所有类型的事件(例如在调整容器大小时计算新坐标)。

我个人更喜欢使用GridBagLayout,因为它允许您指定所有类型的约束(如何分配自由空间,组件将使用多少空间,插图等)。 This tutorial将帮助您开始使用GridBagLayout

存在其他LayoutManager,每个都有优点和缺点(例如Flow LayoutMigLayoutBoxLayout)。根据您的需要,一些经理可能过于简单或过度。您应该尝试学习其中的许多知识,以便找到适合您需求的方法。