【问题标题】:Tree Does not expand in NatTable树在 NatTable 中不展开
【发布时间】:2015-10-07 06:05:38
【问题描述】:

我正在尝试来自here的示例

我注释了rowHeaderLayer、ColumnHeaderLayer、CornerLayer、GridLayer,并直接将viewPortLayer设置为nattable。树出现了,但我无法展开和折叠树,尽管我有 rowHideShowLayer。

这里是代码 sn-p:

    EventList<Datum> eventList = GlazedLists.eventList(datums.values());
    SortedList<Datum> sortedList = new SortedList<Datum>(eventList, null);

    String[] propertyNames = new String[] { "self", "bar" };
    IColumnPropertyAccessor<Datum> columnPropertyAccessor = new ReflectiveColumnPropertyAccessor<Datum>(propertyNames);

    // Column header layer
    IDataProvider columnHeaderDataProvider = new DefaultColumnHeaderDataProvider(propertyNames);
    DataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer(columnHeaderDataProvider);

    ISortModel sortModel = new GlazedListsSortModel<Datum>(
            sortedList,
            columnPropertyAccessor,
            configRegistry, 
            columnHeaderDataLayer);

    final TreeList <Datum> treeList = new TreeList<Datum>(sortedList, new DatumTreeFormat(sortModel), new DatumExpansionModel());
    GlazedListTreeData <Datum> treeData = new DatumTreeData(treeList);

    GlazedListsDataProvider<Datum> bodyDataProvider = new GlazedListsDataProvider<Datum>(treeList, columnPropertyAccessor);
    final DataLayer bodyDataLayer = new DataLayer(bodyDataProvider);

    // Body layer
    ColumnReorderLayer columnReorderLayer = new ColumnReorderLayer(bodyDataLayer);
    ColumnHideShowLayer columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
    SelectionLayer selectionLayer = new SelectionLayer(columnHideShowLayer);

    RowHideShowLayer rowHideShowLayer = new RowHideShowLayer(selectionLayer);

    final TreeLayer treeLayer = new TreeLayer(rowHideShowLayer, new GlazedListTreeRowModel<Datum>(treeData));

    ViewportLayer viewportLayer = new ViewportLayer(treeLayer);

    NatTable natTable = new NatTable(parent, viewportLayer, false);`

【问题讨论】:

    标签: eclipse-rcp nattable


    【解决方案1】:

    呸,我们的代码在什么地方能找到真奇怪……

    我不会研究 googlesource,而是将我们的源代码托管在 Eclipse 基础架构中,并且 IIRC 源代码在 GitHub 上复制。所以更好的例子是

    https://github.com/eclipse/nebula.widgets.nattable/blob/master/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_604_Tree/_6041_TreeGridExample.java

    关于您的问题,您不需要 RowHideShowLayer,我建议将其删除。由于您不使用网格组合,因此您需要将必要的区域标签设置为 ViewportLayer 以启用配置的 UI 绑定。所以需要在创建好ViewportLayer之后添加下面这行代码

    viewportLayer.setRegionName(GridRegion.BODY);
    

    【讨论】:

    • 感谢您提供正确的链接,Drik。我现在用我的代码测试你的建议:)
    猜你喜欢
    • 2017-02-08
    • 2016-08-30
    • 2016-11-29
    • 1970-01-01
    • 2020-04-02
    • 2016-09-03
    • 1970-01-01
    • 2016-07-16
    • 2021-12-21
    相关资源
    最近更新 更多