我已经投入了一个落后于计划的桌面应用程序项目,希望我可以让项目再次运行,但是,我对桌面应用程序开发的经验很少。
我的嗜好者似乎知道他在做什么,但是从来没有设法完成任何事情,所以我只是试图修补这些混乱并将项目推出门外。
应用程序使用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
属性设置得非常大,我只能将顶部文本框拉伸,即便如此,它只会显示出很多列,而不是更大的列。
列表也不会垂直增长,而我能够获得的最好的是让正确的列表增长到某个未知大小,然后左侧列表将会增长。
进度条会增长到包含面板的大小,如果我可以让包含面板填满整个窗口,那就很好。
那么,我错过了什么关键部分?我确信这是一个小元素,但无论我怎么努力,我似乎都无法让事情正确发展。任何帮助非常赞赏。
答案 0 :(得分:4)
我认为问题在于您的根面板没有调整大小,因此该面板内部的任何元素都不需要调整大小。
尝试更改:
panel(layout: new MigLayout()) {
到
panel(layout: new MigLayout('fill')) {
答案 1 :(得分:2)
正如其他人所评论的那样,在实例化MigLayout时必须设置适当的布局约束。 如果你有miglayout plugin,那么代码可以缩短为以下
application(title: ...) {
migLayout layoutConstraints: 'fill'
label 'Root Directory:', constraints: 'split, span'
...
}
答案 2 :(得分:1)
尝试
panel(layout: new MigLayout(**"fillx"**)) {