当需要绝对定位时,null布局管理器的替代解决方案

几个月前,我阅读了这个Swing教程http://zetcode.com/tutorials/javaswingtutorial/resizablecomponent/ ,了解如何在Swing中实现可resize的组件。

本教程讲述了使用null LayoutManager以便有可能绝对定位子组件。

在关于另一个主题的讨论中,@ Andrew Thompson指出使用null布局是个坏主意。 这篇文章http://download.oracle.com/javase/tutorial/uiswing/layout/none.html描述了null布局管理器,因为它无论如何都说在某些情况下它可能是有用的。

在以下情况:

  1. 我需要绝对定位JPanel的子组件
  2. 我需要为子组件实现我自己的边界框条件(以便建立可能的重叠情况)
  3. 我需要JPanel的子组件可resize

在描述的情况下是否正确使用null布局管理器?

或者还有其他更好的解决方案来使用我的JPanel容器组件的布局管理器来实现这些目标?

提前致谢

您最好的解决方案是使用您正在寻找的function和控件来实现您自己的LayoutManager (或扩展现有的LayoutManager ,如果一个非常接近您的需求)。 您的绝对定位要求将成为布局管理器的一种方法。

例如,我过去一直遵循扩展FlowLayout技术,使其能够在JScrollPane包含元素时正确地包装元素。 这是一个例子 ,虽然这与我使用的不同。