在多列的树,我该如何调整列在展开/折叠和数据更新的内容?自动调整列宽时,项目拓展
的解决类似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