GridBagLayout продолжает изменять размер при вводе текста в текстовое поле
У меня есть проблема с запуском GridBagLayout в Groovy с SwingBuilder. Я предполагаю, что проблема в 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 ответ
Я хотел бы иметь окно с текстовой панелью с левой стороны, занимающей ровно 50% окна.
Тогда вы должны использовать панель с GridLayout
для этих двух компонентов.
На правой стороне окна (остальные 50%) другая текстовая панель и ниже этой (но только с минимальным требуемым размером) метка.
Затем, возможно, BorderLayout с текстовой панелью, добавленной в "CENTER", и меткой, добавленной в "PAGE_END".