在setInput()之前保存TreeViewer状态

pen*_*uru 10 java eclipse user-interface jface treeviewer

我正在尝试保存JFace TreeViewer扩展状态以在调用setInput()方法后刷新它.我试过getExpandedElements,setExpandedElements,getExpandedTreePaths,setExpandedTreePaths的方法,TreeViewer但它不工作.

Object[] expandedElements = viewer.getExpandedElements();
TreePath[] expandedTreePaths = viewer.getExpandedTreePaths();
viewer.setInput();
viewer.setExpandedElements(expandedElements);
viewer.setExpandedTreePaths(expandedTreePaths);
Run Code Online (Sandbox Code Playgroud)

小智 10

您需要确保TreeViewer的内容提供程序提供了正确定义其方法hashCode和对象的对象equals.AbstractTreeViewer需要能够比较旧对象和新对象以确定它们的扩展状态.如果hashCodeequals没有提供,这是一个简单的参考检查,如果你重新创建你的内容将无法正常工作.