我如何使元素无限增长与MigLayout



我被投入到一个落后于计划的桌面应用程序项目中,希望我能使项目再次前进,但是,唉,我在桌面应用程序开发方面几乎没有经验。

我的前任似乎知道他在做什么,在某种程度上,但从来没有设法完成任何事情,所以我试图修补混乱,把项目赶出去。

应用程序使用Griffon作为框架,使用MigLayout作为布局管理器,我想我已经掌握了其中的大部分,但是我不知道如何获得规范所要求的增长行为。

这是我正在使用的视图:

application(title: 'MyApp',
        preferredSize: [320, 240],
        pack: true,
        locationByPlatform: true,
        iconImage: imageIcon('/griffon-icon-48x48.png').image,
        iconImages: [imageIcon('/griffon-icon-48x48.png').image,
                imageIcon('/griffon-icon-32x32.png').image,
                imageIcon('/griffon-icon-16x16.png').image]) {
    panel(layout: new MigLayout()) {
        label 'Root Directory:', constraints: 'split, span'
        textField text: 'Put RootDir here', constraints: 'growx'
        button 'Dialog', constraints: 'wrap'
        label 'To be Processed:'
        button 'Go button', constraints: 'spany 3'
        label 'Processed:', constraints: 'wrap'
        scrollPane(constraints: 'center, grow') {
            list listData: (1..20).collect { "Very Long Line $it" }
        }
        scrollPane(constraints: 'center, grow, wrap') {
            list listData: (1..5).collect { "Line $it" }
        }
        label 'info about files'
        label 'info about files', constraints: 'wrap'
        progressBar constraints: 'span, growx, wrap'
        progressBar constraints: 'span, growx'
    }
}

当我将窗口拖大时,顶部的文本字段和底部的两个进度条应该会拉伸以水平填充空间,并且两个列表应该在两个方向上拉伸。其余元素的大小保持不变。

无论我怎么做,我只能让顶部文本框拉伸如果我把它的columns属性设置得很大,即使这样,它也只能显示那么多列,而不是更大。

列表也不会垂直增长,我所能得到的最好结果是让右列表增长到某个未知的大小,然后左列表会增长。

进度条将和包含面板一样大,如果我能让包含面板填满整个窗口,这是很好的。

那么,我错过了什么关键部分?我相信这是一些小因素,但无论我怎么努力,我似乎都不能让东西正确地生长。如有任何帮助,不胜感激。

我认为问题是你的根面板没有调整大小,所以该面板内部的元素都不需要调整大小。

尝试改变:

panel(layout: new MigLayout()) {

panel(layout: new MigLayout('fill')) {

正如其他人所评论的那样,在实例化MigLayout时必须设置适当的布局约束。如果您有miglayout插件,那么代码可以缩短为以下内容

application(title: ...) {
    migLayout layoutConstraints: 'fill'
    label 'Root Directory:', constraints: 'split, span'
    ...
}

Try

panel(layout: new MigLayout(**"fillx"**)) {

最新更新