2014-09-14 5 views
0

У меня проблема с GridBagLayout в groovy с SwingBuilder для запуска. Я думаю, проблема в GridBagLayout, а не в Groovy, поэтому я предполагаю, что это будет работать на Java.GridBagLayout сохраняет размер при вводе текста в текстовое поле

У меня есть следующий простой вид:

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 независимо от того, какой текст вводится в текстовые панели?

ответ

3

Я хотел бы иметь окно с текстовым полем с левой стороны, занимающим ровно 50% окна.

Тогда вы должны использовать панель с GridLayout для этих двух компонентов.

С правой стороны окна (другие 50%) находится другое текстовое поле и ниже этого (но только минимально необходимого размера) ярлык.

Тогда возможно BorderLayout с текстовой панелью, добавленной в «CENTER», и меткой, добавленной в «PAGE_END».

Смежные вопросы