1

SWT テーブルを備えた JFace TableViewer があり、一部のセルのコンテンツをカスタム レンダリングしたいと考えています。SWT コントロールを使用してセルのコンテンツをレンダリングしたいと考えています。

レンダリングを実行する Control のインスタンスを 1 つだけ持つことを希望しますが、行ごとに 1 つのインスタンスを作成する必要がある場合は、それで問題ありません。

次に、ソリューションは ContentProvider/LabelProvider アプローチと互換性がある必要があります (私は EMF を使用しています)。これは、Sniplet 126 ( http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets )で説明されているソリューションを使用できないことを意味します。

次に、カスタム描画の使用について考えました。しかし、ここでの問題は、個々の描画操作をグラフィックス コンテキストに送信する必要があることです。SWT.PaintItem で redraw() または print(GC) を呼び出して、コントロールにコンテンツをレンダリングさせようとしましたが、制御不能なちらつきにつながります。

現時点では、SWT.PaintItem を使用して描画を行うことをお勧めします。これにより、コンテンツを希望どおりにレンダリングできるコントロールが既にあるため、コードが重複します。この冗長性を防ぎたいと思います。

どんな助けでも大歓迎です!

4

1 に答える 1

1

何度か壁に頭をぶつけた後、私はある程度の進歩を遂げました。具体的には、次のフォーム エントリを見つけました。

http://www.eclipsezone.com/eclipse/forums/t115489.html

実際には 2 つの解決策を提供します。最初の解決策は実際にウィジェットを使用します (パフォーマンスのために推奨されませんが、以前から知っていました)。私はこれを試して、それがどうなるかをここに投稿するかもしれません。

2 番目の解決策は、StyledCellLabelProvider の使用を提案します。以前にこれを調べましたが、私の目的には十分強力ではありません。少なくとも今はそう思っています。

于 2010-04-19T12:43:32.817 に答える