jface TreeViewer 刷新后恢复之前的展开状态

当TreeViewer的输入模型发生变化,也就是setInput(Object object)方法的参数,需要使用refresh()刷新TreeViewer,刷新后TreeViewer会折叠所有的节点,怎么恢复之前的展开状态呢?

注意,TreeViewer每一个节点是Catalog类型,自己定义的类。

 

Object[] expandElements = (Object[]) treeViewer.getExpandedElements();// 获取刷新之前展开的元素
treeViewer.refresh();

注意,要在刷新之前获取展开的元素,因为刷新之后默认折叠所有节点。这时不能直接调用treeViewer.setExpandedState(Object, boolean)方法,因为输入模型已经发生变化,恢复展开状态是要展开新的节点,而expandElements存储的是旧的节点,所以要先获取新的节点。

 

List<Catalog> expandParentCatalogs = new ArrayList<Catalog>();
for (Object expandElement : expandElements) {
	if (expandElement instanceof Catalog) {// 获取刷新之前展开的父目录
               expandParentCatalogs.add((Catalog) expandElement);
        }
}

for (Catalog parentCatalog : parentCatalogs) {// 恢复刷新之前展开的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值