как максимизировать высоту компонента, используя формы jgoodies - PullRequest
3 голосов
/ 20 октября 2011

Вопрос Noob : У меня есть следующая структура форм (прошу прощения за синтаксис 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

Советы и указатели приветствуются.

- Бен

1 Ответ

5 голосов
/ 20 октября 2011

Скажите rowSpec, чтобы заполнить высоту:

    FormLayout layout = new FormLayout(
            "10dlu, pref:grow, 10dlu, pref:grow, 10dlu",
            "10dlu, fill:pref:grow, 10dlu, fill:pref:grow, 10dlu"
            );

Технически, это явно отвергает «выравнивание» строки, которое по умолчанию равно CENTER.Для столбцов по умолчанию используется выравнивание FILL (поэтому нет необходимости в переопределении, если вы хотите растянуть по горизонтали).Причина, по которой третья кнопка кажется волочащейся по вертикали, заключается в том, что она охватывает две строки содержимого: мало что еще можно выровнять, чтобы затем заполнить (насколько я помню, не проверял детали)

...