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++;
}
}
我想显示 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++;
}
}