0

Tableを使用してビューに出力するEclipseプラグインを開発しています。さまざまなEclipseおよびUbuntuバージョンでシステムをテストしたところ、表の値が表示されています。つまり、行はコンテンツに適合します。ただし、Macにデプロイする場合、行はコンテンツに適合しません。中に何かが入っているのはわかりますが、コンテンツ全体が表示されておらず、サイズも変更できません。これが私が使用しているコードです:

int style = SWT.NONE;
Table table = new Table(composite, style);
table.setHeaderVisible(true);
table.setLinesVisible(true);

TableColumn col = new TableColumn(table, style);
// Is this ok?
col.setWidth(200);
col.setResizable(true);

for (int i = 0; i < contents.size(); i++){
    TableItem item = new TableItem(table, style);            
    item.setText(contents.get(i));
}

私はさまざまなスタイルで試しましたが、運がありませんでした。何がうまくいかないのか分かりますか?

4

1 に答える 1

1

わかりました、私はトリックを行うこのコードを思いつきました:

public class TableItemPaintListener implements Listener{    
 public void handleEvent(Event event) {
     switch (event.type) {
              case SWT.MeasureItem: {
                  TableItem item = (TableItem) event.item;
                  String text = item.getText();
                  Point size = event.gc.textExtent(text);
                  event.width = size.x;
                  event.height = Math.max(event.height, size.y);
                  break;
            }    
         }
     }
}

その後:

table.addListener(SWT.MeasureItem, new TableItemPaintListener()); 

基本的に、各テーブルアイテムでトリガーされるペイントイベントにハンドラーをインストールします。次に、コンテンツに合わせてセルの高さの値を設定します。

于 2012-09-28T07:03:20.147 に答える