gpt4 book ai didi

java - 如何使 GridLayout 行不相等

转载 作者:行者123 更新时间:2023-12-01 12:13:43 26 4
gpt4 key购买 nike

我想让一行中的每个单元格具有不同的长度..这是一张有帮助的图片。

所以策略单元格和右侧的文本没问题。然而,第 1 部分和第 2 部分我想成为 50/50..而不是 20/80 或现在的任何东西。我已开始使用 WindowsBuilder 工具,而不是手动执行此操作。这可以做到吗?

最佳答案

要在 SWT 中使用 GridLayout 以请求的方式布局控件,您必须将每行的控件分组为它们自己的组合,如下所示:

shell.setLayout( new RowLayout( SWT.VERTICAL ) );
Composite composite1 = new Composite( shell, SWT.NONE );
composite1.setLayout( new GridLayout( 2, false ) );
createLabel( composite1, "2020" );
createLabel( composite1, "808080808080" );

Composite composite2 = new Composite( shell, SWT.NONE );
composite2.setLayout( new GridLayout( 2, false ) );
createLabel( composite2, "50505050" );
createLabel( composite2, "50505050" );

private static Label createLabel( Composite parent, String text ) {
Label label = new Label( parent, SWT.NONE );
label.setText( text );
return label;
}

但是,对我来说,FormLayout 似乎更适合解决给定的问题:

shell.setLayout( new FormLayout() );
FormData leftFormData = new FormData();
leftFormData.top = new FormAttachment( 0 );
leftFormData.left = new FormAttachment( 0 );
leftFormData.right = new FormAttachment( 20 );
Label leftLabel = createLabel( shell, "2020", leftFormData );
FormData rightFormData = new FormData();
rightFormData.top = new FormAttachment( 0 );
rightFormData.left = new FormAttachment( leftLabel );
rightFormData.right = new FormAttachment( 100 );
createLabel( shell, "808080808080", rightFormData );

private static Label createLabel( Composite parent, String text, Object layoutData ) {
Label label = new Label( parent, SWT.NONE );
label.setText( text );
label.setLayoutData( layoutData );
return label;
}

如果您发现 formData 和 formAttachment 代码过于冗长,您可以查看 Slim Down SWT FormLayout Usage

为了深入讨论 SWT 布局,我推荐 Understanding Layouts in SWT文章。

关于java - 如何使 GridLayout 行不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com