Пользовательский DataProvider Nattable - PullRequest
0 голосов
/ 14 мая 2018

создаю nattable следующим образом.Но я могу получить доступ к ячейкам только через геттеры и сеттеры в моем классе учеников.Как еще я могу получить доступ к ячейкам?Должен ли я создать свой собственный BodyDataProvider или использовать IDataProvider?Если это правда, может кто-нибудь привести примеры реализации таких провайдеров?

    final ColumnGroupModel columnGroupModel = new ColumnGroupModel();
    ColumnHeaderLayer columnHeaderLayer;
    String[] propertyNames = { "name", "groupNumber", "examName", "examMark" };

    Map<String, String> propertyToLabelMap = new HashMap<String, String>();
    propertyToLabelMap.put("name", "Full Name");
    propertyToLabelMap.put("groupNumber", "Group");
    propertyToLabelMap.put("examName", "Name");
    propertyToLabelMap.put("examMark", "Mark");

    DefaultBodyDataProvider<Student> bodyDataProvider = new DefaultBodyDataProvider<Student>(students,
            propertyNames);

    ColumnGroupBodyLayerStack bodyLayer = new ColumnGroupBodyLayerStack(new DataLayer(bodyDataProvider),
            columnGroupModel);

    DefaultColumnHeaderDataProvider defaultColumnHeaderDataProvider = new DefaultColumnHeaderDataProvider(
            propertyNames, propertyToLabelMap);
    DefaultColumnHeaderDataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer(
            defaultColumnHeaderDataProvider);
    columnHeaderLayer = new ColumnHeaderLayer(columnHeaderDataLayer, bodyLayer, bodyLayer.getSelectionLayer());
    ColumnGroupHeaderLayer columnGroupHeaderLayer = new ColumnGroupHeaderLayer(columnHeaderLayer,
            bodyLayer.getSelectionLayer(), columnGroupModel);

    columnGroupHeaderLayer.addColumnsIndexesToGroup("Exams", 2, 3);
    columnGroupHeaderLayer.setGroupUnbreakable(2);

    final DefaultRowHeaderDataProvider rowHeaderDataProvider = new DefaultRowHeaderDataProvider(bodyDataProvider);
    DefaultRowHeaderDataLayer rowHeaderDataLayer = new DefaultRowHeaderDataLayer(rowHeaderDataProvider);
    ILayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer, bodyLayer, bodyLayer.getSelectionLayer());

    final DefaultCornerDataProvider cornerDataProvider = new DefaultCornerDataProvider(
            defaultColumnHeaderDataProvider, rowHeaderDataProvider);
    DataLayer cornerDataLayer = new DataLayer(cornerDataProvider);
    ILayer cornerLayer = new CornerLayer(cornerDataLayer, rowHeaderLayer, columnGroupHeaderLayer);

    GridLayer gridLayer = new GridLayer(bodyLayer, columnGroupHeaderLayer, rowHeaderLayer, cornerLayer);

    NatTable table = new NatTable(shell, gridLayer, true);

1 Ответ

0 голосов
/ 15 мая 2018

Как ответили на ваш предыдущий вопрос Как исправить NullPointerException и поместить данные в NatTable , это объясняется в NatTable Начало работы .

Если вам нужен пример кода, попробуйте Приложение примеров NatTable

И, зная ваш предыдущий вопрос, ваша структура данных не работает в таблице, поскольку у вас есть вложенные объекты, дочерние объекты которых хранятся в массиве. Так что это скорее дерево, а не таблица.

...