Кодовое имя One Component Shapes - PullRequest
2 голосов
/ 13 июля 2020
Top-Container{
    padding: 0.5mm 0.5mm 0.2mm 0.5mm;
    margin: 0px;
    background color:green;
}

введите описание изображения здесь

как я могу получить верхний цветной компонент для моих контейнеров. Единственная задача, которая стоит передо мной, - это разработать форму компонента ...

Ответы [ 2 ]

1 голос
/ 28 июля 2020
int size = Math.round(Display.getInstance().getDisplayWidth());

 Label OrderNoField = new Label("P-092");
    OrderNoField.setUIID("white-label");
    Container Fieldbox = new Container(BoxLayout.x());
    Fieldbox.add(OrderNoField);
    
    Container PnoCnt = BoxLayout.encloseYCenter(Fieldbox);
    Style PnoCntStyle = PnoCnt.getAllStyles();
    PnoCntStyle.setBgTransparency(200);
    PnoCntStyle.setBgColor(0x7E57C2);
    PnoCntStyle.setPadding(1, 1, 1, 1);
    
    Image io = theme.getImage("triShape.png").scaled(size / 11, size / 11);;
    Label polygonAge = new Label();
    polygonAge.setIcon(io);
    
    
     Container toplayerd = BorderLayout.center(LayeredLayout.encloseIn(PnoCnt,
            FlowLayout.encloseRight(polygonAge)));
    
    Label orderStatus = new Label("Draft", "Status-red");
    
    Container topsCnt = GridLayout.encloseIn(2, toplayerd, BoxLayout.encloseXRight(BorderLayout.centerAbsolute(orderStatus)));

код bove дал мне тот результат, который я искал

введите описание изображения здесь

1 голос
/ 14 июля 2020

Вы можете использовать довольно простой фон изображения, или вы можете просто определить свой собственный фоновый рисовальщик 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 как обычно.

...