所以我在这些论坛上搜索了这个问题的答案,但似乎找不到。
首先让我声明,我完全理解为什么使用空布局管理器是一个坏主意,在这种情况下,我基本上别无选择。我正在使用遗留代码库,尝试编写自定义布局管理器以执行正确的布局将非常耗时。一些相关信息:
- 这个组件的大小永远不会改变
- 子组件的大小一旦添加到父组件就永远不会改变
- 当用户操作指示它们应该更改时,只有子组件的数量和位置会发生变化
- 此代码未本地化
- 我不能发布代码示例,因为代码是生产软件,对于这个论坛来说太长了
代码流程如下:
- 创建父组件时,布局在构造函数中设置为 null。
- 当用户操作指示他们想要显示信息时,将创建子组件并将其添加到父组件。
- 然后确定每个组件的正确位置,并通过 setLocation() 更改位置。
其中一种类型的子组件是 1 个或多个 JLabel 对象。这是我遇到问题的对象。在某些情况下,对 JLabel 的 setLocation() 函数的调用将具有 x= 52 和 y = 0 的值,但 JLabel 被放置在位置 x = 0, y = 0。我已经确认该位置不是被代码的其他一些区域重置为 0,0,所以现在我想到的是,Java 实现中可能存在一些导致问题的模糊错误。否则,它为什么不尊重对 setLocation() 的调用?
我将确认代码的任何其他区域都没有在 JLabel 上调用 setBounds()。当不使用布局管理器时,是否有任何其他调用可能影响组件的位置?