Есть в свинге (swing) такая штука - JXTable, хорошая но бажная, поскольку находится в проекте лабс. И есть у этой штуки(равно, как и у других таблиц унаследованных от JTable) возможность выделить разным способом ячейки таблицы: цветом беграунда, размером и цветом шрифта и так далее. Существует множество дефолтных хайлайтеров, у дефолтного определяется нужно ли выделять ячейку с помощью предиката, который передаётся в конструктор.
Всё вроде бы хорошо, но у дефолтного ColorHighlighter-а(он задаёт цвет беграунда и фореграунда) есть бага - если его задать, линии таблицы в выделенных ячейках пропадают. Фигово, товарищи.
Решается это дело добавлением другого хайлайтера PainterHighlighter. В него передаётся паинтер, который собственно и рисует линии таблицы.
Примерно так
public class InsteadGridPainter implements Painter {
@Override
public void paint(Graphics2D g, Object object, int width, int height) {
g.setColor(Color.gray);
g.drawLine(width - 1, 0, width - 1, height + 1);
g.drawLine(0, height - 1, width, height - 1);
}
}
Вот, этим нехитрым способом и можно побороть этот грёбаный баг
Всё вроде бы хорошо, но у дефолтного ColorHighlighter-а(он задаёт цвет беграунда и фореграунда) есть бага - если его задать, линии таблицы в выделенных ячейках пропадают. Фигово, товарищи.
Решается это дело добавлением другого хайлайтера PainterHighlighter. В него передаётся паинтер, который собственно и рисует линии таблицы.
Примерно так
public class InsteadGridPainter implements Painter {
@Override
public void paint(Graphics2D g, Object object, int width, int height) {
g.setColor(Color.gray);
g.drawLine(width - 1, 0, width - 1, height + 1);
g.drawLine(0, height - 1, width, height - 1);
}
}
Вот, этим нехитрым способом и можно побороть этот грёбаный баг
Комментариев нет:
Отправить комментарий