#java #swing #layout #jgoodies
#java #swing #макет #jgoodies
Вопрос:
Вопрос новичка: У меня есть следующий макет форм (пожалуйста, извините за синтаксис JRuby). Я бы хотел, чтобы высота всех трех кнопок была растянута, чтобы заполнить доступное пространство. но это делает только кнопка 3.
require 'java'
require './lib/jgoodies-common-1.2.1.jar'
require './lib/jgoodies-forms-1.4.2.jar'
java_import javax.swing.JButton
java_import javax.swing.JFrame
java_import com.jgoodies.forms.layout.CellConstraints
java_import com.jgoodies.forms.layout.FormLayout
class Foo < JFrame
def initialize
super
cc = CellConstraints.new
layout = FormLayout.new(
"10dlu, pref:grow, 10dlu, pref:grow, 10dlu",
"10dlu, pref:grow, 10dlu, pref:grow, 10dlu"
)
layout.setRowGroups([[2, 4]])
layout.setColumnGroups([[2, 4]])
self.setLayout(layout)
self.add(JButton.new("button 1"), cc.xy(2, 2))
self.add(JButton.new("button 2"), cc.xy(2, 4))
self.add(JButton.new("button 3"), cc.xywh(4, 2, 1, 3))
self.pack
self.setVisible(true)
self.toFront
end
end
Foo.new
Советы и указания приветствуются.
—Ben
Ответ №1:
Укажите rowSpec, чтобы заполнить высоту:
FormLayout layout = new FormLayout(
"10dlu, pref:grow, 10dlu, pref:grow, 10dlu",
"10dlu, fill:pref:grow, 10dlu, fill:pref:grow, 10dlu"
);
Технически это явно отменяет «выравнивание» строки, которая по умолчанию является ЦЕНТРАЛЬНОЙ. Для столбцов выравнивание по умолчанию — ЗАПОЛНЕНИЕ (поэтому отменять не нужно, если вы хотите растянуть по горизонтали). Причина, по которой третья кнопка отображается для растягивания magi по вертикали, заключается в том, что она охватывает две строки содержимого: мало что еще можно выровнять, чтобы затем заполнить (насколько я помню, не проверял детали)