在文本字段中输入文本时,GridBagLayout会继续调整大小

时间:2014-09-14 18:21:54

标签: java swing groovy swingbuilder

我在使用SwingBuilder运行groovy中获取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?

1 个答案:

答案 0 :(得分:3)

  

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

然后你应该使用GridLayout面板来表示这两个组件。

  

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

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