6

私はTableViewer2列のを使用します。オブジェクトの状態に応じて、1つ目はテキストを含み、2つ目は画像を含む必要があります。ラベルプロバイダーは、を拡張LabelProviderおよび実装するカスタムプロバイダーですITableLayoutProvider

画像が表示されていない場合、レイアウトは正しく、最初の列のテキストは左揃えになっています。 正しい

しかし、少なくとも1つの画像が表示されると、最初の列のテキストは右と中央の間のどこかに配置されます-ちょっと醜いように見えます。

正しくない

レイアウトは非常に単純です。

availableDevicesList = new TableViewer(this, SWT.SINGLE | SWT.BORDER
| SWT.FULL_SELECTION);
availableDevicesList.setContentProvider(new ArrayContentProvider());

Table table = availableDevicesList.getTable();
TableLayout tableLayout = new TableLayout();
table.setLayout(tableLayout);

table.setLinesVisible(true);

tableLayout.addColumnData(new ColumnWeightData(3));
new TableColumn(table, SWT.LEFT);
tableLayout.addColumnData(new ColumnWeightData(1));
new TableColumn(table, SWT.RIGHT);

この問題の原因は何ですか?

4

1 に答える 1

2

これはWindowsAPIのバグであり、SWTバグレポートを参照してください。これはテーブルの最初の列にのみ影響するため、公式の回避策は最初の列を「スキップ」してゼロサイズに設定することです(バグレポートの最後のコメントを参照)が、Mac OS Xではテーブル列のサイズをゼロにすることはできないため、表示されますサイズ1などの最初の列。

ええ、WinAPIのこのバグも嫌いです。

于 2011-06-17T07:41:25.583 に答える