在多列的樹,我該如何調整列在展開/摺疊和數據更新的內容?自動調整列寬時,項目拓展
的解決類似question for tables不起作用。
同:
tree.addListener(SWT.Collapse, new Listener(){
@Override
public void handleEvent(Event e) {
expandAndResize(false, (TreeItem) e.item);
}
});
tree.addListener(SWT.Expand, new Listener() {
@Override
public void handleEvent(Event event) {
expandAndResize(false, (TreeItem) event.item);
}
});
private static void expandAndResize(Boolean expand_, TreeItem item_)
{
System.out.println((expand_?"Expanding":"Collapsing") + "item={" + item_ + "}");
item_.setExpanded(expand_);
System.out.println(" Resizing columns");
resizeTree(item_.getParent());
}
private static void resizeTree(Tree tree_)
{
for (TreeColumn tc: tree_.getColumns())
resizeTreeColumn(tc);
}
private static void resizeTreeColumn(TreeColumn treeColumn_)
{
treeColumn_.pack();
}
這適用於數據更新(通過調用resizeTree
),但展開/摺疊它是落後一步!
更具體地說,如果我展開第一列中的一個項目,並且基礎項目比列寬度更長,那麼將在下一個摺疊或展開某個其他項目時完成對該寬度的調整大小(或者如果我直接撥打resizeTree
)。
萬一是很重要的:數據被TreeContentProvider
和ITableLabelProvider
給出,我的猜測是,(之前的標籤獲取生成?列的寬度調整)
ITableLabelProvider
可能導致問題X-posted to Eclipse Community Forum
感謝,會嘗試儘快 – MadH 2010-07-11 16:31:16
工作正常,並且這的確是http://stackoverflow.com/的副本問題/ 3148123 /改變的標籤-IN-A-JFace的-的TreeViewer上節點 - 膨脹 - 崩潰/ 3226914#3226914 – MadH 2010-07-12 08:37:23