1

我是一名 Java 开发人员,并且在 Java 中构建了相当多的 GUI 应用程序。我是 Groovy 的新手,坦率地说,我对一些问题感到困惑。

我的问题是我有以下代码。在组件放置的所有约束中,只有 JButton.CENTER 受到尊重。所有其他的都被简单地忽略了。除非我注释掉 bpanel 的所有代码,否则不会显示顶部的“面板”。我已经尝试了各种其他派生来放置组件,但都没有工作 - 一些在运行时编译和错误,而一些根本没有错误 - 就像这些 - 但没有得到尊重。这是代码。非常感谢您的任何帮助。另外,对于那些在 Groovy 中进行 GUI 工作的人,您是使用 SwingBuilder,还是像在 Java 中那样编写代码?

    import java.awt.*  
import javax.swing.*  
import groovy.swing.SwingBuilder  
import java.awt.BorderLayout as BL  

name = "ATestGroovyGui"  
builder = new SwingBuilder().edt {  
    frame(title: name, show: true, pack: true, defaultCloseOperation:JFrame.EXIT_ON_CLOSE) {  
        apanel  = panel() {  
            gridLayout(cols: 2, rows: 2)  
            label(text: "These", horizontalTextPosition: JLabel.CENTER)  
            label(text: "are", horizontalTextPosition: JLabel.CENTER)  
            label(text: "four", horizontalTextPosition: JLabel.CENTER)  
            label(text: "labels", horizontalTextPosition: JLabel.CENTER)  
            constraints: BL.CENTER  
        }  
        bpanel  = panel() {  
            borderLayout()  
            alabel  = label(text: "alabel",  
                 horizontalTextPosition: JLabel.CENTER,  
                 constraints: BorderLayout.WEST)  
            abutton = button(text: "abutton",  
                actionPerformed: { alabel.text = "changed" },  
                horizontalTextPosition: JButton.CENTER,  
                constraints: BorderLayout.EAST )  
            constraints: BL.SOUTH  
            println name + " button hit"  
        }  
    }  
}  
4

1 回答 1

2

我建议您将 Miglayout 用于任何复杂的 UI。有一点学习曲线,但以后会容易得多。SwingBuilder 很好地支持 Miglayout,尽管没有太多可用的文档或示例。以前在这里写过几篇关于 Miglayout 和 Swingbuilder 的文章,大家可以看看。

于 2014-06-08T02:10:13.337 回答