我在玩GTK布局时有些得意了,现在我开始用GTK的术语思考窗口布局,但找不到合适的LayoutManager可供使用。
我特别需要一个用Java编写的LayoutManager,以便在基于Swing的应用程序中使用,其行为几乎与GTK的水平和垂直框完全相同。
特别是,我希望子小部件固定在容器的非轴尺寸上,并且还可以选择让某些组件占用额外空间(即GTK中的“扩展”选项),而其他小部件仅占用它们在轴上的最小大小。
是否有适合此要求的布局管理器?
我在玩GTK布局时有些得意了,现在我开始用GTK的术语思考窗口布局,但找不到合适的LayoutManager可供使用。
我特别需要一个用Java编写的LayoutManager,以便在基于Swing的应用程序中使用,其行为几乎与GTK的水平和垂直框完全相同。
特别是,我希望子小部件固定在容器的非轴尺寸上,并且还可以选择让某些组件占用额外空间(即GTK中的“扩展”选项),而其他小部件仅占用它们在轴上的最小大小。
是否有适合此要求的布局管理器?
在Java中,最可配置的布局管理器是GridBagLayout管理器。它允许您使用gridx
和gridy
指定网格中的位置,并使用weightx
和weighty
沿该轴分配额外空间。
GridBagLayout相当繁琐,因此我建议在使用之前阅读教程,但我从未发现过无法使用GridBagLayout构建的布局。
您可以使用BoxLayout - Oracle教程 - 和javax.swing.box来创建一个具有BoxLayout的组件。
它可以管理垂直和水平布局。
虽然我自己没有使用过GTK,但你描述的方式听起来很像我实现MSBLayout时的要求:
http://msblayout.sourceforge.net/javadoc/de/winterdrache/layout/MSBLayout.html
它结合了BoxLayout和GridBagLayout的属性,这些都是其他用户已经提到过的,但是它更容易使用。