簡體   English   中英

SWT TableItem:如何刪除左邊的填充/縮進?

[英]SWT TableItem: How to remove left padding/ indent?

下面的代碼創建了一個包含兩列和兩行的SWT表。 在我的系統上,生成的shell /表如下所示:

在此輸入圖像描述

我不禁想知道每個單元格文本前面的額外縮進/間距/填充來自何處。 我搜索過網絡並嘗試了一切可能的方法將其刪除,但我找不到辦法。 如何刪除多余的間距(上圖中標記為紅色)?

系統信息:

  • Linux Mint 17
  • SWT 4.4 x86_64

鏈接:

這個例子最初取自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測試了你的代碼,它適用於后者。

你現在有三個選擇:

  1. 等待SWT團隊修復它。
  2. 回歸到較舊的SWT版本。
  3. 強制SWT(4.4)使用GTK2而不是GTK3。

這兩種解決方案都不理想,但我沒有看到另一種選擇。


您可以通過設置環境變量強制SWT使用GTK2:

export SWT_GTK3=0

確保將其設置為永久設置或在每次啟動應用程序之前運行它。

以下是SWT 4.4的發行說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM