[英]SWT TableItem: How to remove left padding/ indent?
下面的代碼創建了一個包含兩列和兩行的SWT表。 在我的系統上,生成的shell /表如下所示:
我不禁想知道每個單元格文本前面的額外縮進/間距/填充來自何處。 我搜索過網絡並嘗試了一切可能的方法將其刪除,但我找不到辦法。 如何刪除多余的間距(上圖中標記為紅色)?
系統信息:
鏈接:
這個例子最初取自java2s.com並進行了一些修改。 原始網站上的屏幕截圖不顯示此間距/縮進。
重現此問題的代碼:
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使用GTK2:
export SWT_GTK3=0
確保將其設置為永久設置或在每次啟動應用程序之前運行它。
以下是SWT 4.4的發行說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.