我姐姐正在使用Eclipse在Java中实现一些应用程序。她在一个窗口中有一个控件CheckboxTreeViewer
。当窗口第一次出现时,一切正常(整个父母和孩子都可见),但是当它折叠并再次展开时,整个内容会消失。
以下是createContents
方法:
protected void createContents() {
shlDetails = new Shell();
shlDetails.setSize(800, 600);
shlDetails.setText("Details");
shlDetails.setBackground(SWTResourceManager.getColor(245, 255, 250));
treeViewerExample = new CheckboxTreeViewer(shlDetails, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
Tree treeExample = treeViewerExample.getTree();
treeExample.setBounds(10, 10, 659, 204);
treeExample.setHeaderVisible(true);
treeExample.setLinesVisible(true);
TreeViewerColumn treeViewerColumnName = new TreeViewerColumn(treeViewerExample, SWT.NONE);
TreeColumn trclmnName = treeViewerColumnName.getColumn();
trclmnName.setText("Operation type");
trclmnName.setWidth(300);
TreeItem trtmParent = new TreeItem(treeExample, SWT.NONE);
trtmParent.setText("FOR ALL");
TreeItem trtmChild = new TreeItem(trtmParent, SWT.NONE);
trtmChild.setText("FOR LANDING");
TreeItem trtmChild_1 = new TreeItem(trtmParent, SWT.NONE);
trtmChild_1.setText("FOR TAKE-OFF");
trtmParent.setExpanded(true);
TreeItem trtmChild_2 = new TreeItem(trtmParent, SWT.NONE);
trtmChild_2.setText("FOR TOUCH AND GO");
TreeItem trtmChild_3 = new TreeItem(trtmParent, SWT.NONE);
trtmChild_3.setText("FOR PRACTICE LOW APPROACHES");
TreeItem trtmChild_4 = new TreeItem(trtmParent, SWT.NONE);
trtmChild_4 .setText("FOR TAXIING");
TreeItem trtmChild_5 = new TreeItem(trtmParent, SWT.NONE);
trtmChild_5.setText("FOR CROSSING");
TreeItem trtmChild_6 = new TreeItem(trtmParent, SWT.NONE);
trtmChild_6.setText("FOR AIRSHOW PARTICIPATING ACFT");
}
答案 0 :(得分:0)
如果您使用JFace CheckboxTreeViewer
(或只是TreeViewer)
,则必须使用内容提供商(TreeViewer.setContentProvider
)(以及标签提供商)。
使用TreeItem
仅适用于Tree
未管理的TreeViewer
。 TreeViewer
假定它完全控制了树,并将替换您添加的所有树项。
因此,您可以在没有Tree
的情况下自行创建TreeViewer
并添加TreeItem
。或者,您可以将TreeViewer
与内容提供商,标签提供商和模型一起使用。但是你不能混合这两种方法。