JPanel 和 Java 布局管理器

JPanel and Java layout managers

在互联网上看了一段时间关于JPanel的文章,我觉得看完之后我仍然需要澄清一下。我的问题:

  1. JPanel主要用来做什么?
  2. 哪个布局管理器使用起来最灵活?
  3. 如何使用布局管理器在特定区域定位组件?

我发现使用布局管理器很难将组件定位在容器内的某些区域。

你推荐我使用什么布局管理器,或者你是否必须混合使用不同的布局管理器?

My first question is what is JPanel mostly used for.

你已经知道了。您将组件添加到面板。

My second question is which layout manager is most flexible to use

布局管理器越灵活,使用起来就越复杂。所以诀窍是从逻辑上设计您的 GUI,然后使用具有不同布局管理器的多个面板来实现您想要的效果。

每个布局管理器都有自己的长处和短处。

I find it really difficult to position components at certain areas within the container using a layout manager.

这是旧思想。您不应该尝试专门定位组件。您通常定位组件并让布局管理器随着用户更改框架的大小进行调整。

也许您希望组件居中或在网格中。有不同的布局管理器来完成您的任务。我们无法给出具体建议。如果您遇到特定问题,那么作为一个特定问题,post 您的代码显示您已尝试过的内容。

但首先,请阅读 Layout Manager 上的 Swing 教程并下载示例代码 玩代码以了解每个代码的工作原理。你在尝试中学习。

What layout manager do you recommend I use or do you have to use a mixture of different ones.

这取决于 GUI。除了最琐碎的用户界面之外,我通常会结合使用布局管理器。另一方面,有些人喜欢尝试为相同的 GUI 使用更复杂的布局,使用如下布局:

  1. GridBagLayout - 年纪大了,但多才多艺。
  2. GroupLayout - 更新、更强大,并提供更好的对齐元素的能力不能移植到下一个 GUI 设计者或 IDE.
  3. 第三方布局管理器,如 MigLayoutFormLayout

JPanel可以使用:

  1. 作为其他组件的容器
  2. 自定义小部件的基础
  3. 绘图区

MigLayout 无疑是最灵活的布局管理器。

Swing 中有很多布局管理器,但在我看来 只有三个人能胜任这份工作:

  1. MigLayout
  2. GroupLayout
  3. FormLayout

由于 MigLayout 是(大大)改进的 FormLayout,我通常 推荐前两位经理。

混合使用不同的经理是一种糟糕的做法。这是一种方式 克服基本布局管理器的简单性。一个人应该选择一个好的布局管理器,而不是与多个布局管理器纠缠在一起。大多数布局可以使用 MigLayoutGroupLayout 轻松完成。