2016-10-13 2 views
0

信じられないほど簡単な質問:私はSWTテーブル(ビューア)を持ち、SWT.MeasureItemリスナを使用してセルの高さを設定します。どのようにセルの内容をセルの下部に揃えるには?テーブルの垂直方向を定義する方法

(それはおそらくSWT.PaintItemに別のリスナーといくつかの数学と協力して、手動ですべての私のセルをレンダリングするが、それは正しい方法ではないことができます。)私は怖い

public class TableDialog extends Dialog { 

    public static void main(String[] args) { 
     TableDialog dialog = new TableDialog(new Shell()); 
     dialog.open(); 
    } 

    public TableDialog(Shell parent) { 
     super(parent); 
    } 

    @Override 
    protected void configureShell(Shell newShell) { 
     super.configureShell(newShell); 
     newShell.setText("Table Test"); 
     newShell.setSize(500, 300); 
    } 

    @Override 
    protected Control createDialogArea(Composite parent) { 
     Composite container = (Composite) super.createDialogArea(parent); 
     container.setLayout(new FillLayout()); 

     TableViewer viewer = new TableViewer(container, SWT.BORDER | SWT.FULL_SELECTION); 
     viewer.setContentProvider(new ArrayContentProvider()); 
     viewer.setInput(Arrays.asList("A", "B", " C")); 

     Table table = viewer.getTable(); 
     table.setLinesVisible(true); 
     table.addListener(SWT.MeasureItem, e -> e.height = 90); 

     return container; 
    } 
} 

答えて

2

SWT.MeasureItemを使い始めると、図面も作成する必要があります。

TableViewerを使用しているので、ビューアラベルプロバイダとしてOwnerDrawLabelProviderを使用することで、1つのクラスですべてを組み合わせることができます。非常に簡単なバージョンは次のようなものです:

viewer.setLabelProvider(new OwnerDrawLabelProvider() 
    { 
    @Override 
    protected void paint(final Event event, final Object element) 
    { 
     String text = element.toString(); 

     GC gc = event.gc; 

     int textHeight = gc.textExtent(text).y; 

     int yPos = event.y + event.height - textHeight; 

     gc.drawText(text, event.x, yPos); 
    } 


    @Override 
    protected void measure(final Event event, final Object element) 
    { 
     event.height = 90; 
    } 


    @Override 
    protected void erase(final Event event, final Object element) 
    { 
     // Stop the default draw of the foreground 
     event.detail &= ~SWT.FOREGROUND; 
    } 
    }); 
1

SWT.PaintItemは権利がありますこの場合、

SWTスニペットの1つは、テーブル項目に複数の行を描画する方法を示しています。それはあなたのカスタム描画コードのための出発点となることがあります。

http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet231.java

Custom Drawing Table and Tree Items品は、情報を提供します。

関連する問題