好吧,我玩弄了 GTK 布局,把自己宠坏了,现在我开始考虑用 GTK 的术语来考虑窗口布局,但找不到合适的 LayoutManager 来使用。
我正在寻找一个用 Java 编写的 LayoutManager,用于基于 Swing 的应用程序,其行为几乎与 GTK 的水平和垂直框完全相同。
特别是,我希望子小部件固定到容器的离轴大小,并且还可以选择让某些组件占用额外空间(GTK 中的“扩展”选项),而其他小部件只占用它们的最小值轴上尺寸。
有没有一个布局管理器可以做到这一点?
好吧,我玩弄了 GTK 布局,把自己宠坏了,现在我开始考虑用 GTK 的术语来考虑窗口布局,但找不到合适的 LayoutManager 来使用。
我正在寻找一个用 Java 编写的 LayoutManager,用于基于 Swing 的应用程序,其行为几乎与 GTK 的水平和垂直框完全相同。
特别是,我希望子小部件固定到容器的离轴大小,并且还可以选择让某些组件占用额外空间(GTK 中的“扩展”选项),而其他小部件只占用它们的最小值轴上尺寸。
有没有一个布局管理器可以做到这一点?
在 Java 中,最可配置的布局管理器是 GridBagLayout 管理器。gridx
它允许您使用and指定网格中的位置,以及如何使用andgridy
沿该轴分配额外空间。weightx
weighty
GridBagLayout 非常繁琐,所以我建议在使用之前阅读教程,但我从来没有找到我无法使用 GridBagLayout 构建的布局。
您应该使用嵌套布局。如果您了解 java 中的网格框流边框布局,这很容易,那么您可以嵌套它们来制作您想要的任何东西。如果我了解您想要如何布局组件,我会给您一些 java 代码来完成它。顺便说一句,您可能想尝试 mig 布局http://www.miglayout.com/。我自己不使用它,因为我都准备好知道如何使用摇摆布局,但它是一个不错的库。
虽然我自己并没有按照您描述的方式使用 GTK,但这听起来像是我实现 MSBLayout 的要求:
http://msblayout.sourceforge.net/javadoc/de/winterdrache/layout/MSBLayout.html
它结合了其他海报已经提到的 BoxLayout 和 GridBagLayout 的属性,但使用起来要容易得多。
您可以将 BoxLayout - Oracle 教程- 和 javax.swing.box 用于具有 BoxLayout 的组件。
它可以管理垂直和水平布局。