Установить максимальную высоту заголовков столбцов - NatTable - PullRequest
0 голосов
/ 27 июня 2019

У меня есть заголовки столбцов, которые используют VerticalTextPainter.

Если для setCalculateByTextHeight и setCalculateByTextLength задано значение true, это приводит к изменению размеров столбцов, чтобы они правильно помещали весь текст внутри ячеек.

Иногда заголовки содержат много текста, поэтому я бы хотел, чтобы они имели максимальную высоту.

Если я перестану использовать setCalculateByTextHeight и setCalculateByTextLength, то размеры ячеек не изменятся вообще, поэтому они просто показывают ....

Как я мог сделать это?

Обновление

@Override
protected void setNewMinLength(ILayerCell cell, int contentHeight) {

    final ILayer layer = cell.getLayer();
    final int cellLength = cell.getBounds().height;

    if (contentHeight < MAXIMUM_HEIGHT && cellLength < contentHeight) {
        layer.doCommand(new RowResizeCommand(layer, cell.getRowPosition(), contentHeight));
    } else {
        layer.doCommand(new RowResizeCommand(layer, cell.getRowPosition(), MAXIMUM_HEIGHT));
    }
}

Переопределить paintControl в NatTable

@Override
public void paintControl(final PaintEvent event) {
    super.paintControl(event);

    /**
     * After first time rendering we stop column/row headers calculating their
     * height/lengths. This allows the user to resize the column/row headers after
     * the NatTable has been rendered.
     */
    if (firstRender) {
        columnHeaderPainter.setCalculateByTextHeight(false);
        columnHeaderPainter.setCalculateByTextLength(false);

        rowHeaderPainter.setCalculateByTextHeight(false);
        rowHeaderPainter.setCalculateByTextLength(false);
        firstRender = false;
    }
}

1 Ответ

0 голосов
/ 28 июня 2019

Нет встроенного механизма для указания максимальной высоты или ширины.Либо вы настраиваете, что высоту следует рассчитывать на основе содержимого, либо устанавливаете фиксированную высоту.

Я думаю, вы могли бы добиться этого, создав подкласс VerticalTextPainter и переопределив setNewMinLength (), чтобы выполнить RowResizeCommand только в том случае, еслиcontentHeight больше, чем cellLength, а cellLength не больше вашего максимума.И, конечно, RowResizeCommand должен изменить размер только до указанного вами максимума.

Выполнение проверки в любом другом месте, вероятно, приведет к бесконечной обработке изменения размера ячейки.

...