2017-02-17 3 views
0

DragDetectListenerを追加してdoCommandを実行しました。それは本当の結果をもたらしますが、カラムはフリーズしません。 私のコードは次のとおりです。選択層以外の層を使用せずにナットテーブルの列をフリーズする方法

bodyDataLayer = new DataLayer(bodyDataProvider); 
     GlazedListsEventLayer<IzSearchResultRowData> glazedListsEventLayer = new GlazedListsEventLayer<IzSearchResultRowData>(bodyDataLayer, eventList); 
     bodyLayer = new DefaultBodyLayerStack(glazedListsEventLayer); 
     ColumnOverrideLabelAccumulator bodyLabelAccumulator = new ColumnOverrideLabelAccumulator(bodyDataLayer); 
     bodyDataLayer.setConfigLabelAccumulator(bodyLabelAccumulator); 
     // Column header layer 
     selectionLayer = bodyLayer.getSelectionLayer(); 
     DataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer(bulkDataManager); 
     columnHeaderDataLayer.setRowHeightByPosition(0, 35); 
     final FreezeLayer freezeLayer = new FreezeLayer(selectionLayer); 
     final CompositeFreezeLayer compositeFreezeLayer = new CompositeFreezeLayer(
       freezeLayer, bodyLayer.getViewportLayer(), selectionLayer); 
     ColumnHeaderLayer columnHeaderLayer = new ColumnHeaderLayer(columnHeaderDataLayer, compositeFreezeLayer, selectionLayer); 

別の事: 私は位置が選択層を介して座標取得しています

natTable.addDragDetectListener(new DragDetectListener() { 
    @Override 
    public void dragDetected(DragDetectEvent paramDragDetectEvent) { 
     boolean b = natTable.doCommand(new FreezeColumnCommand(glazedListsGridLayer.getcompositeFreezeLayer(), 0)); 
    } 
}); 

は層スタックのコードを追加します。フリーズコマンドを実行しているとき natTable.doCommand(新しいFreezeColumnCommand(glazedListsGridLayer.getSelectionLayer()、0));

それは誤った結果を与えます。

答えて

0

レイヤースタックが表示されないと難しいと伝えます。多分複雑なレイヤー構成をしているかもしれませんし、インデックス位置の変換のためにコマンドが途中で失われているかもしれません。位置座標を指定するレイヤーでコマンドを実行してみます。

natTable.addDragDetectListener(new DragDetectListener() { 
    @Override 
    public void dragDetected(DragDetectEvent paramDragDetectEvent) { 
     boolean b = glazedListsGridLayer.getcompositeFreezeLayer().doCommand(
      new FreezeColumnCommand(glazedListsGridLayer.getcompositeFreezeLayer(), 0)); 
    } 
}); 
+0

レイヤースタックのコードを追加する: –

+0

私が示唆したことを試しましたか?位置座標を指定するレイヤー上のコマンドを起動しますか? SelectionLayerはFreezeLayerの下にあります。そのような位置を指定すると、コマンドが処理されないという問題が起きている可能性があります。 –

+0

このように試してみると、falseを返す: glazedListsGridLayer.getSelectionLayer()。doCommand(new FreezeColumnCommand(glazedListsGridLayer.getcompositeFreezeLayer()、0)); –

関連する問題