SWT TableItem:如何删除左填充/缩进?
SWT TableItem: How to remove left padding/ indent?
下面的一段代码创建了一个具有两列和两行的 SWT table。在我的系统上,生成的 shell/table 如下所示:
我不禁想知道每个单元格文本前面多余的indent/spacing/padding是从哪里来的。我已经在网上搜索并尝试了所有可能的方法来删除它,但我找不到方法。 如何去除多余的间距(上图中标红的部分)?
系统信息:
- Linux 薄荷 17
- SWT 4.4 x86_64
链接:
这个例子最初取自java2s.com,稍作修改。原始站点上的屏幕截图未显示此 spacing/indent。
重现此问题的代码:
public class SwtTableItemIssue {
public static void main(String[] a) {
Shell shell = new Shell(Display.getDefault());
shell.setSize(200, 180);
shell.setLayout(new FillLayout());
Table t = new Table(shell, SWT.BORDER);
t.setHeaderVisible(true);
TableColumn tc1 = new TableColumn(t, SWT.NONE);
TableColumn tc2 = new TableColumn(t, SWT.NONE);
tc1.setText("First Name");
tc2.setText("Last Name");
tc1.setWidth(70);
tc2.setWidth(70);
new TableItem(t, SWT.NONE).setText(new String[] { "Tim", "Hatton" });
new TableItem(t, SWT.NONE).setText(new String[] { "Caitlyn", "Warner" });
shell.open();
shell.layout();
Display display = Display.getDefault();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
好的,做了一些研究,结果是 GTK3 问题。
从 4.4 版开始,SWT 默认使用 GTK3(如果可用)。我已经用 GTK3 和 GTK2 测试了你的代码,它在后者中工作。
您现在有三个选择:
- 等待SWT团队修复。
- 退回到旧的 SWT 版本。
- 强制 SWT (4.4) 使用 GTK2 而不是 GTK3。
两种解决方案都不理想,但我看不到其他选择。
您可以通过设置环境变量强制 SWT 使用 GTK2:
export SWT_GTK3=0
确保在每次启动应用程序之前将其设为永久设置或运行。
Here 是 SWT 4.4 的发行说明。
下面的一段代码创建了一个具有两列和两行的 SWT table。在我的系统上,生成的 shell/table 如下所示:
我不禁想知道每个单元格文本前面多余的indent/spacing/padding是从哪里来的。我已经在网上搜索并尝试了所有可能的方法来删除它,但我找不到方法。 如何去除多余的间距(上图中标红的部分)?
系统信息:
- Linux 薄荷 17
- SWT 4.4 x86_64
链接:
这个例子最初取自java2s.com,稍作修改。原始站点上的屏幕截图未显示此 spacing/indent。
重现此问题的代码:
public class SwtTableItemIssue {
public static void main(String[] a) {
Shell shell = new Shell(Display.getDefault());
shell.setSize(200, 180);
shell.setLayout(new FillLayout());
Table t = new Table(shell, SWT.BORDER);
t.setHeaderVisible(true);
TableColumn tc1 = new TableColumn(t, SWT.NONE);
TableColumn tc2 = new TableColumn(t, SWT.NONE);
tc1.setText("First Name");
tc2.setText("Last Name");
tc1.setWidth(70);
tc2.setWidth(70);
new TableItem(t, SWT.NONE).setText(new String[] { "Tim", "Hatton" });
new TableItem(t, SWT.NONE).setText(new String[] { "Caitlyn", "Warner" });
shell.open();
shell.layout();
Display display = Display.getDefault();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
好的,做了一些研究,结果是 GTK3 问题。
从 4.4 版开始,SWT 默认使用 GTK3(如果可用)。我已经用 GTK3 和 GTK2 测试了你的代码,它在后者中工作。
您现在有三个选择:
- 等待SWT团队修复。
- 退回到旧的 SWT 版本。
- 强制 SWT (4.4) 使用 GTK2 而不是 GTK3。
两种解决方案都不理想,但我看不到其他选择。
您可以通过设置环境变量强制 SWT 使用 GTK2:
export SWT_GTK3=0
确保在每次启动应用程序之前将其设为永久设置或运行。
Here 是 SWT 4.4 的发行说明。