我应该在Java GUI中使用哪个LayoutManager?

我应该在Java GUI中使用哪个LayoutManager?,java,swing,layout-manager,Java,Swing,Layout Manager,我想制作一个GUI并通过代码完成它,而不是像Netbeans那样拖拉所有东西。如果可能的话,我想为我要插入的每件东西设置坐标,因为它将为我提供我想要的精度。我尝试过GridBagLayout,但没有发现它符合我的喜好,但也许我对它了解不够,不知道该怎么做。也许MigLayout对我来说是一个不错的选择,但我想知道是否有更好的方式满足我的需求 总之:我想制作一个GUI,在这里我可以直接添加每个对象的特定坐标。我应该使用哪种布局?对于每个面板,您可以/应该有不同的布局管理器,具体取决于内部的布局。没

我想制作一个GUI并通过代码完成它,而不是像Netbeans那样拖拉所有东西。如果可能的话,我想为我要插入的每件东西设置坐标,因为它将为我提供我想要的精度。我尝试过GridBagLayout,但没有发现它符合我的喜好,但也许我对它了解不够,不知道该怎么做。也许MigLayout对我来说是一个不错的选择,但我想知道是否有更好的方式满足我的需求


总之:我想制作一个GUI,在这里我可以直接添加每个对象的特定坐标。我应该使用哪种布局?

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

您可能会发现,作为正确选择布局管理器的提示列表很有用

但是请注意,每个布局管理器都有其特殊之处,因此从一个布局管理器切换到另一个布局管理器可能会给您带来一些小麻烦。例如,有些人尊重最小/最大尺寸,有些人不尊重,等等

总结:你不应该试图“手动”设置坐标。虽然这是可能的,但最好用逻辑的方式表达视觉元素之间的关系。这将大大有助于您调整页面大小,解决本地化问题,正确嵌套和提取控件,以及在许多其他我现在不记得的地方。在Eclipse中尝试。它提供了双向设计和代码生成。

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

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

存在其他
LayoutManager
,每个都有优点和缺点(例如
Flow Layout
migloayout
BoxLayout
)。根据您的需要,有些管理者可能过于简单,或者过于熟练。你应该试着学习其中的许多方法,以便找到适合你需要的方法。

看看:

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


您要做的是避免任何布局管理器。布局管理器的目的是使组件正确布局,而不考虑外观、字体等。使用绝对坐标无法实现布局管理器的目的。学习如何使用它们:这是一件好事,但我显然是个新手。不管是哪种方式,有没有一种简单的方法来添加一个组件以及您想要它所在的坐标?我的GUI将用于演示我的类,所以它基本上是动画。我需要在屏幕上动态创建/删除对象。不过,我还要尝试GridBagLayout。@Chickeneatergue所有
LayoutManager
类都可以从容器中动态创建/删除对象。你的“需求”应该解释为你的GUI布局有多复杂,你必须显示多少对象,通过你想要的约束控制组件放置的级别。这会很有帮助,但我需要在我的GUI中动态创建对象。这就是为什么我想坚持只编码。你仍然可以这样做。WindowBuilder只是在生成GUI时做了大量的工作。直观地布局,手动调整代码,如果需要,将其加载回WindowBuilder。我通常不做第三步,但是有一个选项,特别是对于快速的健康检查。我安装了这个。非常有用。最后,我把这个和另一个建议一起使用。