CheckboxTreeViewer的全部内容消失

时间:2014-11-29 18:01:03

标签: java swt

我姐姐正在使用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");
}

1 个答案:

答案 0 :(得分:0)

如果您使用JFace CheckboxTreeViewer(或只是TreeViewer),则必须使用内容提供商(TreeViewer.setContentProvider)(以及标签提供商)。

使用TreeItem仅适用于Tree未管理的TreeViewerTreeViewer假定它完全控制了树,并将替换您添加的所有树项。

因此,您可以在没有Tree的情况下自行创建TreeViewer并添加TreeItem。或者,您可以将TreeViewer与内容提供商,标签提供商和模型一起使用。但是你不能混合这两种方法。