CustomLineBorderDecorator Непрерывная линия между столбцами - PullRequest
0 голосов
/ 12 ноября 2018

В настоящее время я застрял на задаче рисования непрерывной линии между конкретными столбцами с использованием nattable.Я нарисовал линии в каждой ячейке с помощью CustomLineBorderDecorator.Проблема в том, что между каждой строкой есть тонкая серая линия. Эта серая линия видна между единичными сегментами границы, которые генерирует каждая ячейка.Мне нужна непрерывная линия от заголовка до нижней части таблицы.Как я могу попасть туда?

order

1 Ответ

0 голосов
/ 12 ноября 2018

Если вы хотите рисовать над линиями сетки, вам нужно реализовать IOverlayPainter. ICellPainter, как и CustomLineBorderDecorator, будет рисовать только внутри ячейки.

Простая версия может выглядеть так:

natTable.addOverlayPainter(new IOverlayPainter() {

    @Override
    public void paintOverlay(GC gc, ILayer layer) {
        Color beforeColor = gc.getForeground();
        gc.setForeground(GUIHelper.COLOR_RED);
        int gridBorderX = natTable.getStartXOfColumnPosition(4) - 1;
        gc.drawLine(gridBorderX, 0, gridBorderX, layer.getHeight() - 1);
        gc.setForeground(beforeColor);
    }
});

Но эта версия, например, не учитывает прокрутку.

Сборки SNAPSHOT содержат HideIndicatorOverlayPainter, который выполняет еще несколько проверок для визуализации такой линии на основе метки внутри областей заголовка. Но вы можете адаптировать это, чтобы найти позицию для рендеринга на основе меток.

...