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".

Другие вопросы по тегам