0

ここから例を試しています

rowHeaderLayer、ColumnHeaderLayer、CornerLayer、GridLayer にコメントし、viewPortLayer を nattable に直接設定しました。ツリーが表示されますが、rowHideShowLayer があるにもかかわらず、ツリーを展開および折りたたむことができません。

コード スニペットは次のとおりです。

    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);`
4

1 に答える 1

0

ふぅ、私たちのコードが見つかる場所は本当に奇妙です...

代わりに、Eclipse インフラストラクチャでソースをホストしており、ソースは 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);
于 2015-10-06T22:05:38.733 に答える