我在使用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?
答案 0 :(得分:3)
我想要一个窗口,左侧有一个文本窗格,占据窗口的50%。
然后你应该使用GridLayout
面板来表示这两个组件。
在窗口的右侧(另外50%)另一个文本窗格及其下方(但只取最小所需大小)标签。
然后可能是BorderLayout,文本窗格添加到“CENTER”,标签添加到“PAGE_END”。