0

我在使用 SwingBuilder 运行 GridBagLayout 时遇到问题。我猜这个问题是 GridBagLayout 而不是 Groovy,所以我认为这在 Java 中也是一样的。

我有以下简单的布局:

new SwingBuilder().edt {
  frame(title: 'test', defaultCloseOperation: JFrame.EXIT_ON_CLOSE, pack: true, show: true) {
    gridBagLayout()
    widget(textPane(background: java.awt.Color.RED), constraints: gbc(gridx:0, gridy: 0, weightx: 0.5, weighty: 1, fill: GBC.BOTH, gridheight: GBC.REMAINDER))
    widget(textPane(background: java.awt.Color.GREEN), constraints: gbc(gridx: 1, gridy: 0, weightx: 0.5, weighty: 1, fill: GBC.BOTH))
    label(text: "test label", background: java.awt.Color.BLUE, opaque: true, constraints: gbc(gridx: 1, gridy: 1, weightx: 0.5, fill: GBC.BOTH))
  }
}

我想要一个窗口,左侧的文本窗格正好占据窗口的 50%。在窗口的右侧(另外 50%)另一个文本窗格和下方(但只占用最小所需大小)一个标签。

上面的代码可以工作并创建我想要的窗口,但是一旦我开始在左侧文本窗格中键入,左侧将开始占用更多空间(超过 50% 的窗口)。

我怎样才能实现上述布局,所以无论在文本窗格中输入什么文本,双方都将始终为 50:50?

4

1 回答 1

3

我想要一个窗口,左侧的文本窗格正好占据窗口的 50%。

然后,您应该 GridLayout为这两个组件使用带有 a 的面板。

在窗口的右侧(另外 50%)另一个文本窗格和下方(但只占用最小所需大小)一个标签。

然后可能是一个 BorderLayout,文本窗格添加到“CENTER”,标签添加到“PAGE_END”。

于 2014-09-14T18:29:04.537 回答