【问题标题】:SWT Grid Layout widthSWT 网格布局宽度
【发布时间】:2013-03-29 05:54:37
【问题描述】:

我正在尝试使用 SWT 创建一个简单的显示。到目前为止,我成功地显示了我的数据库中的信息并使用 RowLayout 显示它,每一行都包含一个 GridLayout。它看起来像这样:

我真正想要的是让行扩展以占据窗口的整个宽度。我如何做到这一点?

感谢您的帮助!

【问题讨论】:

    标签: java swt


    【解决方案1】:

    实现此目的的常用方法是使用GridData。这个GridData 告诉组件如何在它的父级中表现,例如如何在父级中传播。

    通过使用:

    component.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
    

    您告诉组件在水平方向上占用尽可能多的空间,但在垂直方向上只占用必要的空间。

    下面是一个小例子,它的行为应该符合您的预期:

    public class StackOverflow
    {
        public static void main(String[] args)
        {
            Display display = Display.getDefault();
            Shell shell = new Shell(display);
    
            /* GridLayout for the Shell to make things easier */
            shell.setLayout(new GridLayout(1, false));
    
            for(int i = 0; i < 5; i++)
            {
                createRow(shell, i);
            }
    
            shell.pack();
            shell.open();
    
            while (!shell.isDisposed())
            {
                if (!display.readAndDispatch())
                    display.sleep();
            }
            display.dispose();
        }
    
        private static void createRow(Shell shell, int i)
        {
            /* GridLayout for the rows, two columns, equal column width */
            Composite row = new Composite(shell, SWT.NONE);
            row.setLayout(new GridLayout(2, true));
    
            /* Make each row expand horizontally but not vertically */
            row.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
    
            /* Create the content of the row, expand horizontally as well */
            Button first = new Button(row, SWT.PUSH);
            first.setText("FIRST " + i);
            first.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
            Button second = new Button(row, SWT.PUSH);
            second.setText("SECOND " + i);
            second.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
        }
    }
    

    这是启动后的样子:

    调整大小后:


    附带说明:如果您还没有阅读过,我建议您阅读 Eclipse 中关于布局的 this 教程。每个 SWT 开发人员都应该读过它。

    【讨论】:

    • 感谢您的帮助。如何使用不同大小的列获得相同的功能?
    • 我使用嵌套网格布局来近似我想要的外观。再次感谢。
    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2023-01-19
    • 2011-05-02
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多