Динамически добавлять строки в таблицу - Easytable (PDFBox) - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть следующий метод для создания заголовка таблицы в easytable ( easytable )

    public void addHeader(){
    myTable = Table.builder()
            .addColumnsOfWidth(widthColumn,widthColumn,widthColumn)
            .addRow(
                    Row.builder()
                            .add(TextCell.builder().text("Id").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build())
                            .add(TextCell.builder().text("Name").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build())
                            .add(TextCell.builder().text("Town").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build())
                            .build())

            .build();
}

Затем таблица рисуется:

    public void drawTable() {
    tableDrawer = TableDrawer.builder()
            .contentStream(contentStream)
            .startX(marginX)
            .startY(page.getMediaBox().getHeight() - marginY)
            .table(myTable)
            .build();

    tableDrawer.draw();
}

Заголовок таблицы прорисован правильно, но .. Как бы вы могли динамически добавлять строки? Нужно ли рисовать новую таблицу? Могу ли я добавить строки в уже созданную таблицу?

Спасибо ..

1 Ответ

0 голосов
/ 28 апреля 2020

Хорошо, готово .. Спасибо @mkl:)

    public void addMyTable(ArrayList<Person> alp) {
    Table.TableBuilder tb = Table.builder().addColumnsOfWidth(widthColumn,widthColumn,widthColumn);
    tb.addRow(
            Row.builder()
                    .add(TextCell.builder().text("Id").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build())
                    .add(TextCell.builder().text("Name").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build())
                    .add(TextCell.builder().text("Town").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build())
                    .build())

            .build();

    for(Person p : alp){
        tb.addRow(
                Row.builder()
                        .add(TextCell.builder().text(p.getId()).borderWidth(1).backgroundColor(Color.WHITE).horizontalAlignment(HorizontalAlignment.CENTER).build())
                        .add(TextCell.builder().text(p.getName()).borderWidth(1).backgroundColor(Color.WHITE).horizontalAlignment(HorizontalAlignment.CENTER).build())
                        .add(TextCell.builder().text(p.getTown()).borderWidth(1).backgroundColor(Color.WHITE).horizontalAlignment(HorizontalAlignment.CENTER).build())
                        .build())
                .build();
    }
    myTable = tb.build();
}
...