SWT:如何在各种 RowLayout 内的所有按钮中具有相同的宽度

SWT: How to have same width in all the buttons inside various RowLayout

我想显示 5 列 9 行的 table。 table 将显示 45 个按钮,每个按钮将在按钮文本中写入数字。第一列的数字是从 1 到 9,因此按钮的宽度小于接下来的四列,因为接下来的列的数字是两位数。

objective就是让5个RowLayout的45个按钮宽度一样

    Composite numbersComposite = new Composite(composite, SWT.NONE);
    numbersComposite.setLayout(new GridLayout(5, true));

    int rows = 9;
    int columns = 5;                        

    for (int i=0; i<columns; i++) {
        Composite column = new Composite(numbersComposite, SWT.NONE);
        RowLayout columnLayout = new RowLayout(SWT.VERTICAL);
        columnLayout.fill = true;
        column.setLayout(columnLayout);

        for (int j=0;j<rows; j++) {         
            button = new Button(column, SWT.TOGGLE);
            button.setText(""+number);      
            buttons.add(button);    
            number++;
        }
    }

我不想为所有按钮设置固定大小,因为如果用户增加计算机中的字体大小,那么在固定大小下文本将不会完全可见。

只需将 pack 设置为 false。

pack specifies whether all controls in the layout take their preferred size

columnLayout.pack = false;
column.setLayout(columnLayout)

这对所有内容都使用 GridLayout,并在所有控件和组合上设置 GridData 以填充列:

for (int i = 0; i < columns; i++) {
    Composite column = new Composite(numbersComposite, SWT.NONE);
    column.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));

    GridLayout columnLayout = new GridLayout();
    column.setLayout(columnLayout);

    for (int j = 0; j < rows; j++) {
        Button button = new Button(column, SWT.TOGGLE);
        button.setText(Integer.toString(number));

        button.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

        buttons.add(button);

        number++;
    }
}