【问题标题】:SpringLayout with SwingBuilder带有 SwingBuilder 的 SpringLayout
【发布时间】:2014-08-13 22:53:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: groovy swingbuilder springlayout


    【解决方案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 以获得更简单的解决方案。

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      相关资源
      最近更新 更多