をソート私は最初は私のテーブルには、ゼロ行があり http://www.eclipse.org/nattable/documentation.php?page=sorting と例 NatTable - 奇妙な行動
6031_GlazedListsFilterExample.java
のオフに基づいて並べ替え/フィルタ機能を持つnattableを持っています。シナリオ1:
- ノー行でNatTableが含まれているCTabItemを表示します。
- それから、行を移入して列見出しをクリックすると、何も起こりません(並べ替えが無効になっているようです)。
シナリオ2:
- ノー行でNatTableが含まれているCTabItemを表示しません。
- 次に、行を設定します。
- 次に、現在行があるNatTableを含むCTabItemを表示します。ノー行でNatTableが含まれているCTabItemを見たりしないでください
- :予想通り、私は(ソートが有効になっているようだ)列ヘッダー、すべての種類に
シナリオ3をクリックし
- 。
- 次に、行を設定します。
- 次に、現在行があるNatTableを含むCTabItemを表示します。
- その後、すべての行データを削除します
- 私は列見出しをクリックすると、すべてのソートが期待通りに行われます(並べ替えが有効になっているようです)。 *行がなくても列ヘッダーセルに上/下アイコンが表示されます
NatTableの最初の「ビュー」の後に列ヘッダーアクションが「更新」されないのはなぜですか?言い換えれば、NatTableが最初に表示された後の行の変化にかかわらず、残りのテーブルの寿命について、行の有無が考慮されるようです。
関連するコードセクションは、以下に示す:
private CompositeLayer createExampleLayer(Collection<T> values,
IColumnPropertyAccessor<T> columnPropertyAccessor,
IDataProvider columnHeaderDataProvider, IConfigRegistry
configRegistry, Matcher<T> matcher) {
BodyLayerStack<T> bodyLayerStack = new BodyLayerStack<>(
values, columnPropertyAccessor);
// build the column header layer
DataLayer columnHeaderDataLayer = new
DefaultColumnHeaderDataLayer(columnHeaderDataProvider);
ILayer columnHeaderLayer = new
ColumnHeaderLayer(columnHeaderDataLayer, bodyLayerStack,
bodyLayerStack.getSelectionLayer());
SortHeaderLayer<T> sortHeaderLayer = new SortHeaderLayer<>
(columnHeaderLayer, new GlazedListsSortModel<T>
(bodyLayerStack.getSortedList(), columnPropertyAccessor,
configRegistry,
bodyLayerStack.getBodyDataLayer()), false);
FilterRowHeaderComposite<T> filterRowHeaderLayer = new
FilterRowHeaderComposite<>(
new DefaultGlazedListsFilterStrategy<T>
(bodyLayerStack.getFilterList(), columnPropertyAccessor,
configRegistry),
sortHeaderLayer, columnHeaderDataLayer.getDataProvider(),
configRegistry);
// Omitted code for rowHeaderLayer and cornerLayer
return new GridLayer(bodyLayerStack, filterRowHeaderLayer,
rowHeaderLayer, cornerLayer);
}
public BodyLayerStack(Collection<T> values,
IColumnPropertyAccessor<T> columnPropertyAccessor) {
eventList = GlazedLists.eventList(values);
TransformedList<T, T> rowObjectsGlazedList =
GlazedLists.threadSafeList(eventList);
this.sortedList = new SortedList<>(rowObjectsGlazedList, null);
// wrap the SortedList with the FilterList
this.filterList = new FilterList<>(sortedList);
this.bodyDataProvider = new ListDataProvider<>(this.filterList,
columnPropertyAccessor);
this.bodyDataLayer = new DataLayer(getBodyDataProvider());
// layer for event handling of GlazedLists and PropertyChanges
GlazedListsEventLayer<T> glazedListsEventLayer = new
GlazedListsEventLayer<>(bodyDataLayer, this.filterList);
this.selectionLayer = new SelectionLayer(glazedListsEventLayer);
ViewportLayer viewportLayer = new ViewportLayer(getSelectionLayer());
setUnderlyingLayer(viewportLayer);
}
private void enableSorting() {
this.nattable.addConfiguration(new SingleClickSortConfiguration());
}
どのようにデータを入力しますか? –
eventListをロックし、それを直接に追加してください – ekjcfn3902039
そして初期値リストは何ですか?空のリストまたはnull? –