java - SWT:如何在各种 RowLayout 内的所有按钮中具有相同的宽度
问题描述
我想显示一个 5 列 9 行的表格。该表将显示 45 个按钮,每个按钮都将在按钮文本中写入数字。第一列包含从 1 到 9 的数字,因此按钮的宽度小于接下来的四列,因为接下来的列具有两位数字。
目标是在五个 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++;
}
}
我不想为所有按钮设置固定大小,因为如果用户增加计算机中的字体大小,那么文本将不会以固定大小完全可见。
解决方案
这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++;
}
}
推荐阅读
- javascript - Angular:使用颜色选择器输入更改颜色 css 变量
- javascript - 使用 AngularJs 和 PHP 发布有效负载并接收响应
- c# - 使用 lambda 在类列表中查找类列表
- python - Jupyter notebook is extremely slow when re-running cells
- php - Symfony:使用全局变量
- business-objects - 使用 API 在 Business Objects BI4 中的对象后面获取 SQL 查询
- javascript - 如何在调试模式下排除某些部分 javascript 代码的执行
- java - Java Hibernate C3P0存储过程命名查询错误-语句关闭后不允许操作,无法释放JDBC连接
- javascript - 使用正则表达式字母数字进行输入验证,并且只允许一些特殊字符
- android - Dagger 2 kotlin 和泛型