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

时间:2011-03-26 13:12:50

标签: java css-position resize layout-manager null-layout-manager

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

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

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

在以下情况下:

  1. 我需要绝对定位JPanel的子组件
  2. 我需要为子组件实现我自己的边界框条件(以便建立可能的重叠情况)
  3. 我需要JPanel的子组件可重新调整大小
  4. 在描述的情况下是否正确使用空布局管理器?

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

    提前致谢

1 个答案:

答案 0 :(得分:2)

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

例如,我过去一直遵循扩展FlowLayout的技术,以便在JScrollPane中包含元素时正确包装元素。 Here is an example,虽然这与我使用的不同。