如何使用jgoodies表单最大化组件高度

use*_*814 3 java layout swing jgoodies

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
Run Code Online (Sandbox Code Playgroud)

提示和指示赞赏.

--Ben

kle*_*tra 5

告诉rowSpec填充高度:

    FormLayout layout = new FormLayout(
            "10dlu, pref:grow, 10dlu, pref:grow, 10dlu",
            "10dlu, fill:pref:grow, 10dlu, fill:pref:grow, 10dlu"
            );
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这明确地覆盖了行的"对齐",默认情况下是CENTER.对于列,默认对齐方式为FILL(因此,如果要水平拉伸,则不需要覆盖).第三个按钮看起来垂直拉伸的原因是它跨越了两个内容行:它可以对齐然后填充的其他内容(据我记忆,没有检查细节)