1

我正在尝试快速轻松地布局按钮和标签的行和列。让按钮和标签的宽度相同看起来很荒谬,所以我排除了GridLayout. 如果有人建议,我可能会割腕GridBagLayout。所以我认为SpringLayout这是我最好的选择。但我不是 Groovy 专家,尤其是 GUI 方面。

所以我希望有人可以提供或指出一个使用 SpringLayout 和SwingBuilder. 特别是如何指定约束,因为在我看到的所有 SwingBuilder 示例中,每个小部件实例都是在没有命名实例的情况下动态创建的。那么我将如何为相对约束引用另一个兄弟或父小部件?我在互联网上没有找到任何可以解释这一点的东西。

具有 2 行/2 列的工作示例代码将获得胜利!

4

1 回答 1

1

您可以id在节点中设置并将id后者称为变量,例如:

import javax.swing.*
import groovy.swing.*

new SwingBuilder().edt {

    def layout = springLayout()

    frame(title: 'SpringLayout', visible: true, layout: layout) {
        label(id: 'label1', text: 'Label1: ')
        textField(id: 'textField1', columns: 15)
        label(id: 'label2', text: 'Label2: ')
        textField(id: 'textField2', columns: 15)
    }

    def label1Cons = layout.getConstraints(label1)
    label1Cons.setX(Spring.constant(5))
    label1Cons.setY(Spring.constant(5))
    def textField1Cons = layout.getConstraints(textField1)
    textField1Cons.setX(Spring.sum(Spring.constant(5), label1Cons.getConstraint(SpringLayout.EAST)))
    textField1Cons.setY(Spring.constant(5))

    def label2Cons = layout.getConstraints(label2)
    label2Cons.setX(Spring.constant(5))
    label2Cons.setY(Spring.sum(Spring.constant(30), label2Cons.getConstraint(SpringLayout.NORTH)))
    def textField2Cons = layout.getConstraints(textField2)
    textField2Cons.setX(Spring.sum(Spring.constant(5), label2Cons.getConstraint(SpringLayout.EAST)))
    textField2Cons.setY(Spring.sum(Spring.constant(25), textField1Cons.getConstraint(SpringLayout.NORTH)))

}

也许您应该尝试 MigLayout 以获得更简单的解决方案。

于 2014-08-14T19:01:54.443 回答