0

JFace TableViewer を NatTable に置き換えようとしています。TableViewer を使用した実装では、セルに画像がありILabelProvider、実行時にオブジェクトの具体的な状態の画像を取得する方法を認識している実装があります。だから私はから電話ILabelProvider.getImage(element)ColumnLabelProviderます。

NatTable では、configLabel に対して registring configAttribute を介して画像を追加する方法を知っています。configAttribute については、使用するイメージを明示的に指定する必要があります。確かに、すべての状態のラベルを作成し、すべてのラベルに画像を登録し、ConfigLabelAccumulator を使用してすべてを結び付けることができます。しかし、画像の量は非常に膨大であり、さらに、このロジックを複製したくありません。では、そのような場合により適切な方法はありますか? 既存のものに委譲するだけILabelProviderですか?

4

1 に答える 1

2

ラベル ソリューションを取得するためのかなりのダイナミクスImageがある場合 (たとえば、行オブジェクトごとに異なる画像を持つショップ システムについて考える場合)。このような場合、通常はカスタムを実装し、メソッドで使用することをImagePainter決定するコードを実装します。ImagegetImage()

次のスニペットは、使用する を決定するためのカスタム ロジックを実装するだけでよい出発点として使用できImageます。このように、登録する必要があるのは 1 つだけですImagePainter。NatTable では、これは、たとえばTreeImagePainter.

public class ContentDependentImagePainter<T> extends ImagePainter {

    IRowDataProvider<T> dataProvider;

    public ContentDependentImagePainter(IRowDataProvider<T> dataProvider) {
        this.dataProvider = dataProvider;
    }

    @Override
    protected Image getImage(ILayerCell cell, IConfigRegistry configRegistry) {
        // get the row object
        T rowObject = dataProvider.getRowObject(cell.getRowIndex());
        Image result = null;

        // perform your custom logic to determine the Image

        return result;
    }
}
于 2016-05-04T06:54:45.520 に答える