SWt: какого цвета граница элемента управления? - PullRequest
2 голосов
/ 08 августа 2011

Я хочу нарисовать верхнюю границу Composite с таким кодом:

final Composite c = new Composite(parent, SWT.NONE);
        c.setLayout(new FormLayout());
        c.addPaintListener(new PaintListener(){

            @Override
            public void paintControl(PaintEvent e) {
                int x = c.getBounds().x;
                int y = c.getBounds().y;
                e.gc.setForeground(SWTResourceManager.getColor(0));
                e.gc.drawLine(x, y-23, x + c.getBounds().width, y-23);
            }

        });

но как сделать так, чтобы границы выглядели так же, как границы по умолчанию?и как я могу получить правильную координату Y композита?

Я хочу, чтобы композит имел только верхнюю границу, есть ли другой способ сделать это?

Ответы [ 3 ]

2 голосов
/ 08 августа 2011

Проверка Обнаружение фрагмента системных настроек , который показывает, как можно получить системные цвета.

В вашем случае

Color borderColor = display.getSystemColor(SWT.COLOR_WIDGET_BORDER);
1 голос
/ 08 августа 2011

Это нетривиальная проблема: -)

Посмотрите на UIForms в Eclipse - особенно org.eclipse.ui.forms.widgets.FormToolkit.BorderPainter ...

1 голос
/ 08 августа 2011

1)

Для этого вы можете использовать 3 композиты 1 Композит, в котором размещены 2 других.

как:

MainComposite

  • TopComposite (какая граница очень мала)
  • ЦентрКомпозит (в котором размещена ваша информация)

2)

Вы можете использовать LayoutData для внутреннего Composite с информацией о расстоянии. Но чем бы вы увидели Parent Composite сверху и снизу.

Взгляните на

  • GridData.verticalIndent
  • GridData.heightHint
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...