画像(サムネイルのある行)を持つ可能性のあるTreeItemsが取り込まれたツリーがあります。MeasureItem リスナーで行の高さを変更しましたが、すべて問題ありません。
しかし、今はこの変更を動的にしたいと考えています。行に画像が必要かどうかを確認し、現在リストされている行のいずれかの行に表示する必要がある画像がある場合は、行の高さを 180px に設定し、すべての行がその高さになります。画像を含む行がない場合、行の高さは 25px にする必要があります。
問題は、行の高さが 180 ピクセルに設定されている場合、25 ピクセルに戻すことができないことです。私のコードは次のようになります(簡略化):
//this check is run on each page of paginated results fetched from DB
rowHeight=25;
for(Result r : results){
if(r.hasImage()){
rowHeight=180;
break;
}
}
// resize the row height using a MeasureItem listener
tree.addListener(SWT.MeasureItem, new Listener() {
public void handleEvent(Event event) {
event.height = rowHeight;
}
});
//added 'event.height=rowHeight' here just to check if it will draw as I want
tree.addListener(SWT.EraseItem, new Listener() {
public void handleEvent(Event event) {
if(event.index!=ColumnType.SCREENSHOT.toIndexNum()){
event.detail &= ~SWT.FOREGROUND;
}
event.height=rowHeight;
}
});
rowHeight 変数が適切に設定され、MeasureListener の「event.height」も同じ値に設定されます。しかし、それでも身長を下げたくありません。結果のすべてのページで、アイテムを でクリアしていますtree.removeAll()
。たぶん、テーブル/ツリーを破棄して再作成する必要があります(これはしたくありません)。
それで、それを行う方法はありますか?
PS混乱しないように、行にさまざまな高さは必要ありません。Windows/Macでは不可能であることはわかっています。高さをリセットする方法が必要です。