Вы можете использовать довольно простой фон изображения, или вы можете просто определить свой собственный фоновый рисовальщик et c. для рисования фона компонента, например:
int triangleWidth = convertToPixels(5);
cmp.getUnselectedStyle().setBgPainter((g, rect) -> {
g.setColor(cmp.getUnselectedStyle().getBgColor());
g.fillRect(cmp.getX(), cmp.getY(), cmp.getWidth() - triangleWidth, hi.getHeight());
g.fillTriangle(hi.getX() + cmp.getWidth(), cmp.getY(),
cmp.getX() + cmp.getWidth() + triangleWidth, cmp.getY(),
cmp.getX() + cmp.getWidth(), cmp.getY() + hi.getHeight());
}
);
Обратите внимание, что вы можете использовать fill(Shape)
или fillPolygon()
, но я лично предпочитаю более простые API для этих случаев использования, но это зависит от вас.
Вам нужно дать компоненту достаточное количество отступов, чтобы было место для рендеринга треугольника, в противном случае он будет обрезан или текст закончится. Вы можете использовать для этого css как обычно.