0

我被扔进了一个落后于计划的桌面应用程序项目,希望我可以让该项目再次进行,但是唉,我对桌面应用程序开发的经验很少。

我的前任似乎知道他在做什么,有点,但从未设法完成任何事情,所以我只能努力修补混乱并将项目推出门外。

该应用程序使用 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属性设置得非常大,我只能让顶部文本框拉伸,即使那样它也只会显示那么多列,而不是更大。

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

进度条将增长到与包含面板一样大,如果我可以让包含面板填满整个窗口,这很好。

那么,我错过了什么关键部分?我确信这是一些小因素,但无论我多么努力,我似乎​​都无法让事情正常生长。非常感谢任何帮助。

4

3 回答 3

4

我认为问题在于您的根面板没有调整大小,因此该面板内部的所有元素都不需要调整大小。

尝试改变:

panel(layout: new MigLayout()) {

panel(layout: new MigLayout('fill')) {
于 2011-11-15T10:16:34.977 回答
2

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

application(title: ...) {
    migLayout layoutConstraints: 'fill'
    label 'Root Directory:', constraints: 'split, span'
    ...
}
于 2011-11-29T21:51:17.393 回答
1

尝试

panel(layout: new MigLayout(**"fillx"**)) {
于 2011-11-15T10:10:43.843 回答